CrashExplorer is a tool to help analyze crashes of programs written with Visual Studio in C/C++.
After a crash matching symbol files (*.pdb) often do not exists or are not usable if the program is using a copy protection mechanism (e.g. hardware dongle).
In this case it is possible to use a combination of Map files (*.map) and a listing files (*.cod) files. The map file lists all functions of the program with addresses. The listing files maps source code to assembler code per translation unit. The manual way is described in these CodeProject articles 'How to Debug the Exception' and 'Using Windows Event Viewer to debug crashes'
- Faulting module map file: Select the generated map file of the faulting module from the Event Viewer Log entry.
- Crash Address: Copy 'Fault offset' from Event Viewer Log entry
- Call Stack address: Copy address from the 'Disassembly' window.
- Module base address: Copy module base address form the 'Modules' window from the faulting module (exe or dll)
Unzip CrashExplorer-0100.zip to any location. Start CrashExplorer.exe.
Necessary settings in Visual Studio Project:
Enable map file: 'Configuration Properties->Linker->Debugging->Generate Map File' ('/MAP') for the faulting module (exe or dll).
CMake: target_link_options(project PRIVATE "/MAP")
Enable Assembler output: 'Configuration Properties->C/C++->Output Files->Assembler Output': 'Assembly, Machine Code and Source (/FAcs)'
CMake: add_compile_options(/FAcs)
in topmost CMakeLists.txt
- To get correct calls stacks in Visual Studio from loaded dump file install WinDbg as an alternate debugging engine for Visual Studio: Reference: StackOverflow
- In addition to Visual Studio crash dumps can be analyzed with Debug Diagnostic Tool from Microsoft.
- Configure Windows to generate crash dumps
- Tested with Visual Studio 10 and Visual Studio 2019
CrashExplorer is released under the GNU General Public License 3
The example_project uses code from www.geeksforgeeks.org.
- 0.1.0.0 (11 July 2021)
- Initial release
Email: [Jochen Baier](mailto:email a.t. jochen-baier.de)
The algorithm used in CrashExplorer is based on the CodeProject articles 'How to Debug the Exception' , 'Using Windows Event Viewer to debug crashes' and the help of my workmate Martin Strobel.