2012-02-13 5 views
-4

Я пытаюсь отследить причину исключения, иногда последняя строка в трассировке стека происходит там, где это происходит. В других случаях это не так, и вам нужно установить точки останова на другие строки, упомянутые в stacktrace.Чтение трассировки стека

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

+6

Просьба указать (сокращенно) примеры трассировки стека и указать, где именно вы находите информацию обманчивой. – Yuck

ответ

1

я могу думать о 3 случаях, когда вы можете увидеть несколько иной трассировки стека, то где ваш отладчик идет, когда происходит исключение:

  1. Узел построен в режиме выпуска может в конечном итоге оптимизировать и код вы отлаживаете, возможно, не точно представляют IL, который работает.
  2. Если у вас есть попытка {do();} catch (Exception e) {throw e; } он изменит вашу трассировку стека.
  3. Если у вас включен только «только мой код» и исключение выбрано из внешнего кода, для которого у вас есть исходный код, вы можете получить трассировку стека, немного отличающуюся от того, где отладчик хочет остановиться.
Смежные вопросы