Symbols files and debugging

Assume i have a custom service written in VC++ 6.0 and i have shipped it as part of a particular release. Unfortunately i did not take the pdb while building the binary.

At a later point of time my customer reported a crash and i had to get the pdb to identify the crash cause. Will a pdb that i take now be enough to identify the point of crash.

In other words i have taken binary and pdb separately however i did not make any changes to the sourcecode after taking the binary.

My understanding is that even thought he symbols wont match in terms of date and time when they were built but in terms of the content it will match.

Is my understanding correct?

1
задан ckv 17 August 2010 в 15:36
поделиться

3 ответа

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

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

1
ответ дан 2 September 2019 в 22:06
поделиться

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

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

0
ответ дан 2 September 2019 в 22:06
поделиться

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

1
ответ дан 2 September 2019 в 22:06
поделиться
Другие вопросы по тегам:

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