У меня есть целая куча минидампов, которые были записаны во время выполнения приложения через MiniDumpWriteDump. Минидампы были созданы на машине с версией ОС, отличной от моей машины разработки.
Теперь я пытаюсь написать программу для извлечения трассировки стека из минидампов, используя dbghelp.dll. Я иду по MINIDUMP_MODULE_LIST и вызываю SymLoadModule64, но это не может загрузить pdbs (kernel32 и т. Д.) С общедоступного сервера символов. Если я добавлю «C: \ Windows \ System32» к пути символа, он найдет библиотеки DLL и загрузит символы, но, конечно, они не соответствуют библиотекам dll из минидампа, поэтому результаты бесполезны.
Так как же сделать Я говорю dbghelp.dll загрузить и использовать правильные pdbs?
[edit]
Я забыл указать, что SymLoadModule64 принимает только имя файла и не использует информацию о версии / контрольной сумме, поэтому очевидно, что с помощью одного лишь SymLoadModule64 dbghelp не может определить, какой pdb загружать.
информация фактически доступна в MINIDUMP_MODULE_LIST, но я не знаю, как передать ее обратно в dbghelp API.
Существует SymLoadModuleEx, который принимает дополнительные параметры, но я понятия не имею, это то, что мне нужно или что я должен передать дополнительные параметры.
[edit]
Пока не повезло, хотя я заметил, что есть также dbgeng.dll, распространяемый вместе с dbghelp.dll в отладочном SDK. MSDN выглядит достаточно хорошо документированным и говорит, что это тот же движок, что и windbg. Возможно, я смогу использовать это для извлечения трассировки стека.
Если кто-нибудь может указать мне на введение в использование dbgeng.dll для обработки минидампов, это, вероятно, тоже поможет, поскольку MSDN документирует только отдельные компоненты, но не то, как они работают вместе .