Получить имя файла и номер строки из исключения

У меня есть приложение aC# windows (разработанное в архитектуре плагинов), я хочу регистрировать все необработанные исключения из моего приложения. Я могу поймать все исключения.

Я хочу прочитать имя файла и номер строки из исключения. (в .Net 2.0)

я использовал

 if (exception.InnerException != null)
 {
     exception = exception.InnerException;
 }

StackTrace trace = new StackTrace(exception, true);
string fileName = trace.GetFrame(0).GetFileName();
int lineNo = trace.GetFrame(0).GetFileLineNumber();

он работает нормально с исключением в моем приложении, если любое исключение в справочной DLL я не получил fileName и lineNumber

2 ответа

Решение

Эта информация доступна только в том случае, если доступен файл ".pdb" для рассматриваемой библиотеки.

Поэтому вы должны убедиться, что соответствующие файлы ".pdb" находятся рядом с соответствующими им библиотеками DLL.

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

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

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

Другие вопросы по тегам