Нет необходимости иметь файлы MAP. Вам необходимо включить флаг «Создать информацию отладки» /DEBUG
, даже для сборки выпуска. На VS2008 и выше флаг /DEBUG
установлен даже для сборок Release. В более ранних версиях вам нужно явно сделать это.
При этом будут созданы файлы .PDB для вашего .EXE / .DLL, и вы должны хранить их вместе с исполняемыми файлами / DLLS (вы можете или не можете давать клиентам, это ваш выбор). Когда происходит аварийный дамп, вы должны иметь / получить файл .DMP. Просто загрузите этот файл DMP в Visual Studio из того места, где вы сохранили файлы PDB. Это покажет стек вызовов, где произошел сбой.
Если есть несколько потоков, вам нужно переключиться в окно «Потоки» и искать столбец «Приостановлено». Столбец, для которого установлено значение 1 , является потоком, вызвавшим сбой.
Используя это, вы можете увидеть правильный стек вызовов для ВСЕХ работающих потоков. Но вам также понадобится правильная копия исходного кода , чтобы увидеть код! В противном случае это будет просто сборка. Частичный исходный код MFC / ATL / STL и т. Д. Может быть виден, но не ваш код, если только у вас нет правильного исходного кода.
Файлы PDB хранят путь к исходному коду, и они позволяют отладчику загружать исходные файлы, даже если источник находится не в том месте, где вы разместили PDB и файл DMP.