2011-01-22 4 views
3

относительно глубины следа стека в режиме отладки и деблокирования. я пришел к следующему выводу (вызов exception.ToString()):Исключительная трассировка стека

в режиме отладки вы получите полный трассировки стека с номерами строк (несколько кадров) в режиме выпуска вместо полной трассировки стека вы получите только бросание метод в блоке try (одиночный кадр) с номерами строк

  • Это правда? -есть ли способ получить полный стек tracve в режиме выпуска?

привет,

Я хочу войти Сведения об исключении журнал должен включать в себя все трассировки стека (все методы в цепочке) журнал Шоуда включают номера строк каждого метода в трассировке стека.

Я пытался использовать два метода в режиме отладки и выпуска. Мне не понравились результаты:

В режиме отладки оба возвращают полную трассировку стека с номерами строк :-) в режиме освобождения возвратили только данные метода catch. один не может действительно
знать, какой звонок в блоке try не удалось

может кто-нибудь объяснить это? также, информация трассировки стека из excepyion теряется, когда ссылки на исключение из другого метода, называемого в блоке улова

благодаря

опция1: exception.ToString-

опция2: одни и те же результаты (см ниже)

 calling static method receving the exception as parameter 
     System.Diagnostics.StackTrace exceptionStackTrace = 
      new System.Diagnostics.StackTrace(e, true); 
     System.Diagnostics.StackFrame [] exceptionStackFrames = 
      exceptionStackTrace.GetFrames(); 
     foreach (System.Diagnostics.StackFrame stackFrame in exceptionStackFrames) 
     { 
      message += String.Format("at {0} {1} line {2} column {3} \n", 
       stackFrame.GetFileName() == null ? string.Empty : stackFrame.GetFileName(), 
       stackFrame.GetMethod().ToString(), 
       stackFrame.GetFileLineNumber(), 
       stackFrame.GetFileColumnNumber()); 
     } 

ответ

1

Отладочная сборка содержит гораздо больше информации, чем сборку релизов, для облегчения отладки, включая такие строки, как номера строк.

Эта информация находится в файле pdb - если вы не указали это в своем выпущенном приложении, вы не можете получить номера строк в трассировке стека.

Следуйте инструкциям на странице this. Ответьте так, чтобы включить номера строк в сборке выпуска.

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