How Quantify Locates Visual C++ Debug Data

Related Topics

Quantify uses debug line information to collect line-by-line performance data. If debug line information is not available for a module, Quantify times that module.

Quantify uses debug symbol data (typically stored in a module, in .pdb or .dbg files associated with the module, or in .map files) to identify functions. If symbol data is not available for a function, Quantify labels the function UnnamedFunction@<offset> or, in the case of some timed COM functions, UnnamedTimedFunction@<offset>; for example, UnnamedTimedFunction@0x107d38.

Quantify 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 the module's 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 a 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.

Notes:

§      To use selective instrumentation, modules that you select must have debug data, and .exes must also have relocation data.

§      The Time measurement type is not supported for selective instrumentation.

§      Quantify requires relocation data to collect data at line or function level. If relocation data is not available for an .exe, Quantify times the functions. Only the .exe's entry point, or the module's exported functions, are included in the dataset; the time of non-exported functions is attributed to their exported callers. To generate relocation data, specify the /fixed:no and /incremental:no options in the Link tab in the Project Settings dialog box in Microsoft Visual Studio.

§      When Quantify instruments a debug data file, it writes the instrumented file into the cache directory. Quantify reinstruments debug files (.pdb, .map, or .dbg) only when the associated module is reinstrumented.

(C) Copyright IBM Corporation 1993, 2009.