Debugging Windows crash or hang dumps (as produced by ADPlus from the Debugging Tools for Windows) is hard because the official releases don't have debugging symbols. However, you can generate a limited amount of debugging information in an external file called a PDB (Program Database) file.
- Download end extract the corresponding source release.
- Open
mswin32/nmap.sln in Visual C++.
- Switch to "Release" mode.
- Right-click on the "nmap" project and click "Properties".
- Under the "Linker" node, in "Debugging", change "Generate Debug Info" to "Yes (/DEBUG)". You have to do this even though the next line may say "Generate Program Database File: .\Release/nmap.pdb"; that seems not to work without /DEBUG.
- Build the solution.
- You now have a file
Release\nmap.pdb. Copy the dump file into this directory.
- Start up WinDbg, then "File" → "Symbol File Path..." and select the directory where the binary, dump, and PDB are.
- "File" → "Open Crash Dump..." and open the dump. If you see
*** ERROR: Module load completed but symbols could not be loaded for nmap.exe then you did something wrong.
- "View" → "Disassembly" and "View" → "Call Stack".
- Now hopefully you can identify some symbols that give you a clue as to where the crash or hang occurred.
Links