Visual C # backtrace: как узнать, где находится [внешний код]? - PullRequest
10 голосов
/ 16 декабря 2009

Я использую Visual C # для отладки большого проекта C #. Проект очень большой, и только некоторые из pdbs создаются мной. Я могу собрать все pdb, однако это занимает очень много времени. Я отлаживаю обратную трассировку, но часть трассировки помечена [Внешний код]. Я знаю, что некоторые pdb отсутствуют, но как я могу узнать, в какой DLL находится внешний код? В C я могу получить EIP, затем увидеть отображение процесса, чтобы определить, где EIP живет, но как это можно сделать в среде .Net?

Ответы [ 2 ]

23 голосов
/ 16 декабря 2009

Перейти в Инструменты | Варианты | Отладка | Общие и снимите флажок флажок «Включить только мой код». Теперь Visual Studio покажет полный стек вызовов (по крайней мере, для управляемого кода, вы все равно можете увидеть некоторые «нативные переходы»).

1 голос
/ 16 декабря 2009

Итак, если ваш проект действительно такой большой, я полагаю, что все ваши классы хорошо распределены по пространствам имен и что все сборки названы в соответствии с именами пространств, которые они содержат. Поэтому, если вы посмотрите, где ваш внешний код начинается (или заканчивается), вы должны выяснить (или), куда идет вызов, и определить отсутствующую pdb сборки.

...