Забудьте файлы MAP, лучше используйте файлы PDB. Для этого включите опцию компоновщика / DEBUG - да, даже для сборок Release. / DEBUG - опция компоновщика, _DEBUG - опция компилятора. Только _DEBUG контролирует код и любую условную компиляцию, которую исходники / заголовки выставили против этого.
В отладочных сборках отключены оптимизации, включен макрос _DEBUG.
В сборках релизов включены оптимизации, макрос _DEBUG отключен.
/ DEBUG просто поместит отладочную информацию в EXE / DLL и не повлияет на что-либо еще.
Возвращаясь к проблеме, когда происходит сбой. НЕ закрывайте приложение, когда WER (Windows Error Reporting) сообщает о сбое. Вместо этого держите его там, перейдите в диспетчер задач, перейдите на вкладку Процесс , выберите этот сбой / сбой и нажмите « Создать файл дампа ». Файл дампа (полный дамп) будет создан в некоторой локальной папке (путь будет показан менеджером задач). Теперь вы можете закрыть сбойное приложение (окно WER).
Теперь скопируйте этот файл .DMP в какое-то безопасное место, предпочтительно в папку, в которой находится исходная папка выпуска. Откройте его в Visual Studio или WinDbg. На VS, просто нажмите F11 / F10, и вам будет показан стек вызовов. Если запущено несколько потоков (в вашем аварийном приложении), запустите представление «Потоки» и увидите единственный приостановленный поток, дважды щелкните его, и вы найдете место сбоя.
Вы должны иметь правильные PDB вместе со всеми двоичными файлами и абсолютно один и тот же код, чтобы видеть код, иначе стек вызовов не будет хорошим.
Чтобы получить больше информации о PDB и прочем, вы можете прочитать эту статью .