Я сделал приложение C ++ для использования с WinDbg, и намеренно добавить нарушение прав доступа во время выполнения.
Приложение было скомпилировано как сборка релиза, а затем я скопировал exe из папки релиза на рабочий стол. Тем не менее, когда я использую WinDbg, и приложение вылетает, оно открывает мой файл исходного кода, показывая выделенную строку ошибки.
Я не могу понять, как WinDbg понимает мой путь к файлу исходного кода.
Кроме того, когда я получаю аварийный дамп от клиента, это может быть возможно, у меня нет исходного кода со мной. Поэтому я хочу смоделировать сценарий реального мира.
С уважением
Насколько я понимаю, компилятор Visual Studio создает файл .pdb для любого исполняемого файла, который он создает (когда /DEBUG
флаг установлен). Этот файл PDB (программная база данных) содержит информацию (включая пути к исходным файлам), необходимую отладчику для сопоставления адреса в двоичном модуле с исходным кодом. И кажется, что путь к .pdb жестко запрограммирован в двоичном файле. Таким образом, когда вы перемещаете двоичный файл сам, отладчик все еще может найти pdb, из которого он находит источники.
Все пути, вероятно, являются абсолютными и будут работать только на ПК, который скомпилировал двоичный файл.
.pdb содержит информацию о полном пути к исходному файлу. откройте файл .pdb, и вы увидите следующие строки: f: \ dd \ vctools \ crt \ crtw32 \ stdcpp \ locale0.cpp