Отладка версии выпуска DLL (с файлом PDB)

решаемые. Это была проблема MongoDB, я временно убрал ее, чтобы найти долгосрочное решение

21
задан SamB 14 April 2010 в 00:34
поделиться

4 ответа

Я наконец нашел причину проблем с отладкой библиотеки DLL, которая была встроена в конфигурацию релиза:

Прежде всего, она в основном работает, как и ожидалось. Это означает, что если у меня есть встроенная DLL-библиотека конфигурации выпуска плюс соответствующий файл PDB, я могу отлаживать классы / методы, содержащиеся в этой DLL.

Когда я впервые попробовал это, я, к сожалению, попытался перейти к методам класс, который имеет DebuggerStepThroughAttribute , например:

[System.Diagnostics.DebuggerStepThrough]
public class MyClass {
    public void Test() { ... }
}

В этом случае, конечно, невозможно войти в метод из отладчика (как ожидалось / предполагалось).

Так что все работает как задумано , Большое спасибо за ваши ответы.

5
ответ дан 29 November 2019 в 21:38
поделиться

Обычно pdb обнаруживается (по крайней мере для меня), если он находится рядом с dll (как в случае с intellisense xml) файлы). [Тысяча двести шестьдесят шесть] В качестве альтернативы; вам понадобится точка останова после загрузки модуля ...

В точке останова откройте окно «Модули» (Ctrl + D, M- или Debug-> Windows-> Modules). Щелкните правой кнопкой мыши на вашей dll «Загрузить символы из», «Путь к символам» и т. Д.

13
ответ дан 29 November 2019 в 21:38
поделиться

Да, Вы можете отладить код выпуска с помощью PDB. Однако при отладке оптимизированного кода есть некоторые подводные камни, дополнительную информацию здесь и здесь .

Ваша PDB просто должна быть в таком месте, чтобы отладчик мог ее найти - для локальной отладки тот же каталог, что и dll, обычно проще всего. В противном случае поместите его в какое-то место, чтобы отладчик мог его найти, и укажите отладчику на это место с помощью пути символа.

5
ответ дан 29 November 2019 в 21:38
поделиться

Отладка сборки релиза, как правило, намного сложнее, чем отладка. отладочная версия. В общем, вам понадобится некоторое понимание ассемблера x86, и вы, вероятно, потратите некоторое время на просмотр окна дизассемблирования. Это, как правило, единственный способ выяснить, на какой строке кода вы действительно находитесь, так как в сборке релиза с оптимизацией компилятора может произойти значительное встраивание и переупорядочение команд. Кроме того, я считаю, что отладчик часто не может правильно сообщить значения переменных. Если вам нужно знать значение переменной и вы не уверены, что отладчик верен, перейдите в окно разборки и найдите место в памяти или зарегистрируйте, в котором оно находится.

Файлы pdb могут храниться на сервере символов. Проверьте Настройка сервера символов для хорошего учебника. Каждый продукт, который мы собираем на сборочной машине, публикует символы на нашем сервере символов, поэтому мы всегда можем отлаживать любые аварийные дампы, которые мы получаем от WinQual.

3
ответ дан 29 November 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: