Файлы символов и отладка - PullRequest
       34

Файлы символов и отладка

1 голос
/ 17 августа 2010

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

Позже мой клиент сообщил о сбое, и мне пришлось получить pdb, чтобы определить причину сбоя. Будет ли pdb, который я беру сейчас, будет достаточно, чтобы определить точку сбоя.

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

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

Правильно ли мое понимание?

Ответы [ 3 ]

1 голос
/ 17 августа 2010

Вам необходимо убедиться, что вы скомпилировали с точно такой же версией компилятора (исправления могут изменить генерацию кода и адреса), набором опций компилятора / компоновщика, одинаковыми версиями библиотеки, а также тем же источником, чтобы убедиться, что адресаматч.Если вы можете сделать это, вы сможете взять pdb, сгенерированный позже.

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

1 голос
/ 17 августа 2010

Да, это все равно должно работать без проблем (хотя, если память служит, вы можете ожидать предупреждения о несовпадающих отметках времени).

0 голосов
/ 17 августа 2010

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

Вам нужен отладчик, который может принимать несовпадающие символы, такие как WinDbg. Чтобы загрузить несовпадающие символы, введите магическую команду symopt + 0x40.

...