VisualStudio / C #: отладка импортированной DLL - PullRequest
4 голосов
/ 10 июня 2009

У меня есть проект, который импортирует DLL (написано мной). Иногда, когда возникает исключение внутри метода в DLL, хост-проект открывает вкладку и позволяет мне увидеть код в DLL. Я также могу поставить точки останова в нем.

Но это поведение кажется довольно случайным, я не могу его преднамеренно и не всегда работает. Кроме того, я не вижу имя файла в окне проводника проекта.

Любая помощь по отладке DLL? Спасибо

Ответы [ 6 ]

13 голосов
/ 10 июня 2009

Усовершенствованная отладка (для dll, отсутствующей в текущем решении) во многом зависит от того, имеется ли у вас файл символов отладки (.pdb) в очевидном месте - в частности, рядом с самой dll. Вы также можете загрузить символы вручную из окна модулей (при отладке, Отладка -> Windows -> Модуль, щелкните правой кнопкой мыши, Загрузить символы из ...)

3 голосов
/ 10 июня 2009

То, что может вам здесь помешать, - это функция, известная как Just My Code (JMC). Это функция отладчика / CLR, предназначенная для ограничения взгляда пользователей на мир только тем кодом, который они написали. Различные способы определения того, какой кусок кода или DLL принадлежит вам или нет, иногда могут сбивать с толку.

В следующий раз, когда вы столкнетесь с этой проблемой, попробуйте отключить JMC и посмотреть, решит ли она вашу проблему

  • Навигация: Инструменты -> Параметры
  • Навигация: Отладчик -> Общие
  • Снимите флажок «Просто мой код»
2 голосов
/ 18 июля 2011

В управляемой программе C #, которая вызывает C ++ dll, щелкните правой кнопкой мыши свойства вкладка отладки Установите флажок Включить отладку неуправляемого кода

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

1 голос
/ 10 июня 2009

Хотя это не позволяет вам отлаживать код, Reflector очень полезен при проверке DLL. Комбинация Stack Trace, DLL-библиотеки и отражателя часто приводит вас к сути проблемы.

1 голос
/ 10 июня 2009

Visual Studio использует символы .Pdb, сгенерированные процессом компиляции, чтобы позволить разработчику просматривать исходный код при возникновении исключения.

Эта информация существует по двум причинам. Первая причина заключается в том, что компилятор (то есть программа, которая превращает исходный код в приложение, такое как файл .exe или .dll), используется при создании приложения. Вторая причина заключается в использовании людьми при отладке приложения. Символическая информация генерируется как часть компиляции приложения (если вы настроили компилятор на генерацию символической информации). Эта информация может находиться непосредственно в файлах приложения или может быть записана в отдельные файлы символов. Место расположения символов зависит от вашего приложения для разработки и выбранных вами настроек. Например, Microsoft Visual Basic (VB) встраивает символы прямо в файлы программы. Visual C ++ (VC ++) обычно создает один или два отдельных файла.

Файлы символов имеют два типа файлов - .dbg и .pdb. Файлы .dbg имеют формат общего объектного файла (COFF), который представляет собой общее описание файла символов, которое не включает информацию об исходной строке; многие отладчики могут читать эти файлы. Файлы .pdb имеют формат Microsoft и содержат гораздо больше информации, чем файлы .dbg. Например, информация об исходной строке доступна только в символах .pdb. Файлы символов, содержащие информацию о строках исходного кода, позволяют использовать исходный код для отладки.

1 голос
/ 10 июня 2009

Чтобы отладить dll, он должен иметь файл pdb с отладочной информацией, соответствующей этой dll.

...