2

В Visual Studio, когда у меня есть файл IO исключение, я могу видеть глобальный необработанное исключение, как это:Лучший способ отладки файла ошибок ввода-вывода в Visual Studio

System.IO.FileNotFoundException: The system cannot find the file specified.

Однако это не говорит какой файл он пытается получить, или любую другую информацию, которая может помочь мне найти, где в коде вызывает этот доступ к файлу. Я выполнил довольно много онлайн-запросов и попытался взглянуть на стек вызовов, но я не могу найти простой способ отладить это, кроме как установить точки останова повсюду и попытаться войти в точную строку, где исключение происходит ,

Я новичок в Visual Studio, и мне интересно, есть ли у людей предложения по отладке этого лучше. Я уверен, что это кусок пирога опытным пользователям Visual Studio!

Я пишу на C#/C++ и используя Visual Studio 2013 Ultimate.

Update: Моя ошибка, я думал, что я унаследовал некоторые глобальные необработанное код исключения, но оказалось, что это автоматический сгенерированный код в App.gics:

#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION 
     UnhandledException += (sender, e) => 
     { 
      if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break(); 
     }; 
#endif 

+0

Пожалуйста, расскажите нам, как вы делаете свою глобальную обработку исключительных ситуаций. –

+0

Привет @JohnSaunders Я ошибочно предположил, что унаследовал какой-то глобальный код обработки исключений, но это просто автоматический код, вставленный в App.g.i.cs. Я разместил их выше. – JJLL

+0

Попробуйте посмотреть на 'e.ToString()', чтобы увидеть полную трассировку стека. –

ответ

2

Эти шаги работают в VS 2010 - я ожидаю, что это будет очень похоже, если не идентично в более новых версиях.

В то время как в Visual Studio, перейдите к:

  • Debug>Исключения меню
  • Expand среды CLR Исключения
  • Развернуть System.IO
  • Помещенный галочка в Thrown колонка для System.IO.FileNotFoundException

Теперь запустите ваш код в режиме отладки .

Студия предупреждает вас о том, что исключение выбрано. Вот скриншот, как он будет выглядеть. В этом окне вы можете нажать Подробнее, чтобы просмотреть информацию об исключениях.

Это отлично подходит для отладки на вашем компьютере - я использую его все время. Однако у вас должна быть стратегия (например, хорошая, настраиваемая регистрация), если вам нужно отлаживать эти типы информации на чужой машине.

enter image description here

+0

Изменение его для «броска» на самом деле не является необходимым для ситуации ОП. Диалог исключений будет работать так же, как и для исключенных исключений, и трассировка стека покажет, где проблема, и какой код ее назвал. –

+0

@JohnSaunders Я предполагаю, что OP ловить и регистрировать исключение в какой-то момент, подавляя диалоговое окно с необработанной исключительной ситуацией – jglouie

+0

Я бы не сделал этого предположения, но, возможно. Вероятно, занесение в журнал 'ex.Message'. –

1

Просто глядя трассировка стека должна показать вам, где в коде возникает исключение. Это должно дать вам большой намек на то, какой файл он может быть.

Попробуйте отобразить ex.ToString(), чтобы увидеть всю трассировку стека.

+0

Когда я смотрю на стек вызовов, я просто вижу кучу неузнаваемых сообщения, как показано ниже: \t App.exe App.App.InitializeComponent.AnonymousMethod__9 (объект отправитель, Windows.UI.Xaml.UnhandledExceptionEventArgs е) линия 50 \t C# \t [Род Managed Перехода] \t \t Windows.UI.Xaml. dll! DirectUI :: CFTMEventSource :: Raise (struct Windows: : UI :: Xaml :: IApplication *, struct Windows :: UI :: Xaml :: IUnhandledExceptionEventArgs *) \t Unknown – JJLL

+0

Разве это полная трассировка стека? Полная трассировка будет включать строку, которую показал вам помощник исключения отладчика. –

+0

В окне Call Stack имеется около 40 строк, но ни один из них не более описателен, чем те, которые я скопировал. Я вижу эту одну строку, что я не уверен, является ли причиной этих мистических сообщений: «[Рамки ниже могут быть неправильными и/или отсутствовать, без символов, загруженных для mscorlib.ni.dll]' – JJLL

Смежные вопросы