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:
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 use linker .map files. Faster than using .Bsc files
•Map Ordinals to function names use linker definition .def files. Fast, though not usually needed in addition to the other two options
•Use Bsc files to find file and line numbers use compiler .Bsc source code browser files
See also: topics on File Locations and Ordinal Handling,
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 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... 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 specify how many lines of source around the allocation point are examined in order to try and determine the data type
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.