How Purify Locates Debug Data (Error Detection)

Related Topics

Purify uses debug data, including debug line data and symbol data, at run time to identify the exact location of errors in source code and display this information in Error Views. Purify can use debug data that is embedded in a module, or that is located in a .pdb or .dbg file. Purify can also use .map files produced by the Visual C++ linker.

Purify uses the following search orders when looking for debug files:

For .pdb files (where the original, fully qualified .pdb file name is embedded in the module or its corresponding .dbg file):

1.    A .pdb file using the module's current directory but with the original basename.

2.    A .pdb file using the original .pdb file name as specified within the module itself.

3.    A .pdb file using the original basename but in the current working directory.

For .dbg files (where the fully or partially qualified .dbg file name is embedded in the module):

1.    A .dbg file using the module's current directory and current basename.

2.    A .dbg file using the original .dbg file name as specified within the module itself.

3.    A .dbg file using the original basename but in the current working directory.

4.    A .dbg file using the original .dbg file name appended to %SYSTEMROOT%\symbols\<ext>, where <ext> is the module's current extension.

5.    A .dbg file using the original .dbg file name appended to %SYSTEMROOT%\symbols\

For .map files:

1.    A .map file using the module's current directory and current basename.

Note:

§      When Purify instruments a debug data file, it writes the fully qualified pathnames to the copies created and stored in the cache directory. When Purify reads symbol information, during call stack expansion, for example, it always uses the first method described in the steps for .pdb files above.

(C) Copyright IBM Corporation 1992, 2010.