Please enable JavaScript to view this site.

Memory Validator Help

Navigation: The User Interface > Settings > Global Settings Dialog > Data Display

Source Parsing

Scroll Prev Top Next More

The Source Parsing tab allows you control how source code is parsed and what the default behaviour is when symbol debugging information is not found.

 

The default options are shown below:

 

source-parsing-settings

 

 

Source lookup

 

When debugging information is missing or unavailable, you can choose one or more of the following methods to try and resolve the symbols:

 

Use map files to find file and line numbers instructionStep use linker .map filesexternalLink. Faster than using .Bsc files

 

Map Ordinals to function names instructionStep use linker definition .def filesexternalLink. Fast, though not usually needed in addition to the other two options

 

Use Bsc files to find file and line numbers instructionStep use compiler .Bsc source code browser filesexternalLink

 

seeAlsoSee also: topics on File Locations and Ordinal Handling,

 

 

Source parsing for data types

 

Normally Memory Validator can get data type information from the debug heap, but this is not always possible (see below for reasons why parsing may be necessary).

 

Parsing the source code is an alternative way to determine the data type of an allocation, and the following settings are then used:

 

Lazy source code parsing instructionStep the data type will be determined when it needs to be displayed rather than at the time of detecting the allocation

 

With 'lazy' parsing, the object type statistics on the Types page will be incorrect, but Memory Validator may appear to execute faster.

 

Prefer cast to type... instructionStep uses the cast type at the source code location in preference to the original type

 

When parsing source code, a few lines before and after the specified line will be examined to try and detect the appropriate type. This is because the debug information doesn't always align exactly with the line in the source code that would be considered correct by a person viewing it.

 

Lines before / after trace instructionStep specify how many lines of source around the allocation point are examined in order to try and determine the data type

 

 

Why source code parsing may be necessary

 

As mentioned above, Memory Validator can normally get data type information from the debug heap.

 

However, the type information in the debug heap is not always present, depending on how the source code was compiled, and in particular, that information is of no help for allocations made using non CRT functions such as HeapAlloc().

 

For some Win32 handle functions, the handle type is defined by the function, so the type doesn't need to be determined, but for those allocations where a type could not be found, Memory Validator will try to ascertain the type by examining the source code.

 

 

Reset All - Resets all global settings, not just those on the current page.

 

 

Reset - Resets the settings on the current page.