У меня есть целая куча мини-дампов, которые были записаны во время выполнения приложения через 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, но я не знаю, как передать ее обратно в API dbghelp.
Существует SymLoadModuleEx, который принимает дополнительные параметры, но я понятия не имею, если это то, что мне нужно, или что я должен передать для дополнительных параметров.
[править]
Пока что не повезло, хотя я заметил, что в отладочном SDK также есть dbgeng.dll, распространяемый вместе с dbghelp.dll.MSDN выглядит довольно хорошо задокументированным и говорит, что это тот же самый движок, который использует windbg.Может быть, я могу использовать это для извлечения следов стека.
Если кто-нибудь может подсказать мне введение в использование dbgeng.dll для обработки мини-дампов, которые, вероятно, тоже помогут, поскольку MSDN документирует только отдельные компоненты, но не какони работают вместе.