Как пройти через исходный код DLL, которая загружается на лету? - PullRequest
3 голосов
/ 16 февраля 2011

Как пройти через исходный код DLL, которая загружается на лету? У меня есть SLN, который был автоматически создан путем загрузки файла BIN в Visual Studio 2008. Он использует интерфейс командной строки, и в этой командной строке я могу дать команду для загрузки DLL. DLL, которую я загружаю, была собрана из исходного кода. Так что я должен быть в состоянии пройти через этот исходный код.

Нужно ли каким-то образом загружать mdb или как-то сообщать интегрированной среде разработки, как обрабатывать исходный код? В настоящее время я не могу поставить какие-либо точки останова в исходном коде.

Ответы [ 5 ]

6 голосов
/ 16 февраля 2011

Если вы соберете эту dll, то вы сможете создавать отладочные символы и указывать отладчику на эти файлы

Debugging symbols page

Вы должны убедиться, что файлы pdbпостроены на том же самом двоичном файле, который загружен, иначе символы не будут найдены, поскольку они не совпадают.

2 голосов
/ 16 февраля 2011

Если DLL загружается динамически (например, через LoadLibrary на C ++), символы не загружаются до тех пор, пока не будет загружена DLL. Перерыв после вызова, который загружает DLL, затем загрузите источник DLL и установите в нем точки останова. Вы увидите сообщение на панели Вывод Visual Studio, когда символы для DLL загружены.

Вы также можете отладить решение DLL, указав EXE, который будет загружать DLL в опциях отладчика. Затем Visual Studio будет знать, что EXE, вероятно, загрузит DLL и заблаговременно загрузит символы.

1 голос
/ 16 февраля 2011

Вам, вероятно, нужно указать MSVC, где найти файлы PDB для этих библиотек DLL. PDB - это то, что позволяет отладчику искать, какая строка исходного кода идет с каким байтом сборки.

Посмотрите в меню Инструменты-> Параметры-> Отладка-> Символы и попробуйте добавить каталог, в котором находятся ваши PDB, в диалоговое окно.

0 голосов
/ 21 июля 2011

Удалите справочную dll и добавьте ее снова.

Надеюсь, это поможет.

0 голосов
/ 16 февраля 2011

Если DLL уже находится в GAC, то ваша точка останова может не работать. Возможно, вам придется удалить удалить ссылку из GAC и попробовать.

ты это проверял? http://msdn.microsoft.com/en-us/library/c91k1xcf%28v=vs.80%29.aspx

...