Как правильно получить трассировки стека 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.