Я прочитал много похожих вопросов, но, похоже, не могу найти точного ответа, в чем заключается моя проблема.
У меня есть набор мини-дампов из 32-разрядного приложения, которое работало на 64-разрядной Windows 2008. 32-разрядная Visual Studio в моем 32-разрядном Vista Business не затрагивала их вообще, поэтому я пытался открыть их в WinDbg.
У меня нет точных соответствующих файлов .pdb (мы только начали сохранять их ПОСЛЕ этого конкретного выпуска), но у меня есть .pdbs, созданные на той же машине с тем же кодом. У меня также есть доступ к точному исполняемому файлу, который создал мини-дампы.
Я нашел изящное небольшое приложение под названием ChkMatch, которое может сделать .pdbs совпадающим с исполняемым файлом ... единственное отличие (согласно ChkMatch) было в возрасте, поэтому я сопоставил свои новые .pdbs с исходным исполняемым файлом.
Однако, когда я загружаю его в WinDbg, он по-прежнему говорит, что это «несоответствующий pdb», так как я установил .symopts+0x40
, он все равно пытается загрузить их. Затем я получаю предупреждение:
*** WARNING: Unable to verify checksum for myexe.exe
Я запустил !lmi myexe
и увидел, что на самом деле контрольная сумма исполняемого файла фактически равна нулю. Немного покопавшись, я обнаружил, что исполняемый файл должен быть собран с флагом /release
, чтобы иметь контрольную сумму. Это все хорошо, но я не могу точно вернуться во времени и перестроить (если бы я это сделал, я бы точно сохранил оригинал .pdbs :-P).
Я могу здесь что-нибудь сделать? Кажется немного нелепым, я не могу сделать так, чтобы все совпадало по крайней мере настолько, чтобы получить стек вызовов.