2014-01-08 3 views
0

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

Я хочу прочитать Имя файла и номер строки из Исключения. (В .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

+0

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

ответ

4

Эта информация доступна только в том случае, если доступен доступ к файлу «.pdb» для DLL (-ов).

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

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

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

+0

Я думаю, что OP хочет, чтобы номер файла/строки был самым внутренним вызовом внутри приложения, NOT номер файла/строки внутри DLL –

+0

@DrewMcGowen Хм, я думаю, это потому, что у него нет файла «PDB» с полной информацией об отладке для того, что он вызывает «ссылочный файл». –

+0

Thnk u..i скопировал файл .pdb, теперь я получил номер строки и имя файла. – Sumeshk

0

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

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