Подтвердить что ты не робот

Visual С# backtrace: как узнать, где находится [внешний код]?

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

4b9b3361

Ответ 1

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

Ответ 2

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