Crash Dump Module Loading

When Visual Studio loads a crash dump, it loads the binaries (modules) for the crash dump by matching the module name, linker timestamp, and file size. The module name is the base name, so exmpl will match either exmpl.exe or exmpl.dll. When Visual Studio loads a minidump, the name is the basename and the extension, so exmpl.dll will match exmpl.dll only.

Visual Studio assumes that modules are located in the same location as the crash dump and begins searching from that location. Suppose the crash dump exmpl.dmp is found in this location:

C:\qa\dumps\exmpl.dmp

Visual Studio searches the following locations:

C:\qa\dumps\exmpl.exe
C:\qa\dumps\exmpl\exmpl.exe
C:\qa\dumps\qa\exmpl\exmpl.exe
D:\qa\exmpl\exmpl.exe
C:\qa\dumps\exmpl.dll
C:\qa\dumps\exmpl\exmpl.dll
C:\qa\dumps\qa\exmpl\exmpl.dll
D:\qa\exmpl\exmpl.dll
C:\qa\dumps\kernel32.dll
C:\qa\dumps\system32\kernel32.dll
C:\qa\dumps\win2k\system32\kernel32.dll
D:\win32\system32\system32\kernel32.dll

Additional Module Search Paths

You can specify additional module search paths for a specific crash dump.

To tell Visual Studio about a nonstandard extension, you must specify it in the Command Arguments grid of the Property Pages dialog box. The syntax looks like this:

MODPATH =c:\temp\xyz,d:\temp, f:\abc\temp

When you load a crash dump, arguments specified in Command Arguments affect the loading of the crash dump. They do not affect the program being debugged. Most command arguments are ignored. MODPATH affects the loading of crash dump modules but does not affect the loading of files by the program being debugged.

The MODPATH example tells Visual Studio to look for modules in the these directories:

C:\temp\xyz\ntdll.dll
D:\temp\ntdll.dll
F:\abc\temp\ntdll.dll   
C:\qa\dumps\ntdll.dll
C:\qa\dumps\system32\ntdll.dll
C:\qa\dumps\win2k\system32\ntdll.dll
D:\win32\system32\system32\ntdll.dll

Nonstandard Extensions

When reading a crash dump, Visual Studio automatically loads modules with standard extensions (DLL or EXE), but you must tell it about any nonstandard extensions that need to be loaded. For example, if xyz.pkg was loaded in memory when the crash occurred, you must tell Visual Studio about the nonstandard extension PKG.

To tell Visual Studio about a nonstandard extension, you must specify it in the Command Arguments grid of the Property Pages dialog box. The syntax looks like this:

EXTS=.pkg,.drv,.xyz

This example specifies three nonstandard extensions, pkg, drv, and xyz. The period or dot before the extension name is required. Visual Studio searches for modules in the order specified. So, if you have both exmpl.pkg and exmpl.drv, Visual studio will find and load exmpl.pkg rather than exmpl.drv.

You can use MODPATH with EXTS, as show here:

MODPATH=c:\xyz, a:\xyz;EXTS=.pkg,.drv