Как правильно получить трассировки стека MiniDumpWriteDump через границы MFC?

Мы находимся в ситуации, когда мы используем MiniDumpWriteDump для создания файла дампа. Однако мы заметили, что если код принимает путь наш код->MFC-> наш код, стек вызовов заканчивается на MFC, и мы теряем источник проблемы.

Это 64-битное приложение.

Обновление связано с оригинальными комментариями: пример с другого дня был следующий. Мы получили файл дампа от клиента. Загрузил его в VS2017. Трассировка стека остановилась на MFC (Наше понимание) из-за несоответствия между dumpfile и нашей машиной разработки и отсутствием двоичных файлов в хранилище символов MS. В конце концов мы нашли соответствующую версию MFC Dll на другом компьютере в нашей сети, и затем стек вызовов был полностью завершен, и мы могли видеть, как он возвращается из нашего кода -> MFC -> к нашему коду и обнаруживает проблему.

Есть ли способ получить полный стек вызовов в любом случае, даже если мы не получаем символы / двоичные файлы для DLL-файлов MFC?

1 ответ

У вас есть файлы символов MFC всегда в папках текущей Visual Studio. Поэтому вы должны скопировать их или сохранить в своем собственном хранилище символов.

В моем VS 2017 (версия 15.6.3) у меня есть файлы в папке

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\atlmfc\lib\x64
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\atlmfc\lib\x86

Использование правильных файлов PDB также поможет вам получить правильную трассировку стека через границы MFC.

Другие вопросы по тегам