Как WinDbg узнать исходный код?

Я сделал приложение C ++ для использования с WinDbg, и намеренно добавить нарушение прав доступа во время выполнения.

Приложение было скомпилировано как сборка релиза, а затем я скопировал exe из папки релиза на рабочий стол. Тем не менее, когда я использую WinDbg, и приложение вылетает, оно открывает мой файл исходного кода, показывая выделенную строку ошибки.

Я не могу понять, как WinDbg понимает мой путь к файлу исходного кода.

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

С уважением

3

Решение

Насколько я понимаю, компилятор Visual Studio создает файл .pdb для любого исполняемого файла, который он создает (когда /DEBUG флаг установлен). Этот файл PDB (программная база данных) содержит информацию (включая пути к исходным файлам), необходимую отладчику для сопоставления адреса в двоичном модуле с исходным кодом. И кажется, что путь к .pdb жестко запрограммирован в двоичном файле. Таким образом, когда вы перемещаете двоичный файл сам, отладчик все еще может найти pdb, из которого он находит источники.

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

4

Другие решения

.pdb содержит информацию о полном пути к исходному файлу. откройте файл .pdb, и вы увидите следующие строки: f: \ dd \ vctools \ crt \ crtw32 \ stdcpp \ locale0.cpp

0

По вопросам рекламы [email protected]