Please enable JavaScript to view this site.

Memory Validator Help

Navigation: The User Interface > Settings

Symbol Path Truncated Warning

Scroll Prev Top Next More

 

The Symbol Path Truncated warning dialog

 

The symbol path truncated warning dialog is displayed to warn you when the symbol path is too long.

 

 

 symbol-path-truncate-dialog

 

Edit Symbol Paths... instructionStep shows the file locations dialog so that you can edit the paths used for subsequent runs of the program.

 

You can choose when this dialog is displayed.

 

Always show instructionStep The dialog is always shown when the symbol path is too long.

Show when path changes instructionStep The dialog is shown when the symbol path is too long, but only if the symbol path is different than last time this warning was shown.

Never show instructionStep The dialog is never shown.

 

Whether this dialog is displayed or not there is always a warning message written to the diagnostic window when the symbol path is truncated.

 

 

The display lists each path with it's length (including the unshown ';' path separator) and the total length so far so that you can see which paths exceed the truncation point (length and total displayed in red).

 

Any paths that don't exist on this computer are displayed in red.

 

 

Why is this dialog displayed?

 

You may see a Symbol Path Truncated warning dialog in some rare circumstances.

 

This dialog is displayed when the symbol path that has been calculated to pass to DbgHelp.dll to load Microsoft debugging symbols (found in .PDB files) is too long.

 

If the symbol path has been truncated because it is too long it is possible this may mean that some symbol searches will fail, resulting in failure to load some symbols. We display this dialog so that you are aware that the symbol path is too long and would benefit from editing to make the symbol path shorter.

 

Passing a symbol path that is too long to DbgHelp.dll will cause the program being tested to end with an EXCEPTION_INVALID_CRUNTIME_PARAMETER C runtime error. This happens because internally DbgHelp.dll is using a fixed length array to format a string. To prevent this fatal termination of the test program we limit the length of the path passed to DbgHelp.dll.

 

Typically if a path that is long enough to cause this problem is passed to DbgHelp it's because the number of paths in the calculated path contain paths not relevant to finding symbols for the test program. We use the Symbol Path Truncated warning dialog to show you the calculated paths so that you can work out which paths to delete.

 

The calculated symbol paths come from several places:

 

File locations PDB paths

Symbol server symbol storage directories

Symbol handling environment variables

 

 

Fixing the symbol path

 

For this example, we are testing the program E:\om\c\3RD_SRC\cdplayer\Release\cdplayer.exe

 

In the image shown above you can see that seven paths exceed the truncation limit, one of the 7 paths doesn't exist.

 

To work out what to do we need to do several actions:

 

1.Looking at the environment variable settings shows that none of the environment variables are being used. We do not need to consider the content of these environment variables.

 

2.Examining the symbol servers shows that C:\Users\Admin is a local symbol storage location. We should keep this path.

 

3.We should delete the path that doesn't exist: E:\om\c\testApps\testStdinStdoutRedirectEx\Release. We do this using the file locations dialog by clicking Edit Symbol Paths... then click Delete invalid.

 

4.Examining the paths in the file locations dialog we can identify any paths not relevant to the program we are testing. In this case the following paths are not relevant and can be deleted.

 

E:\om\c\testApps\testStdinStdoutRedirect\Release

E:\om\c\testApps\testAppTheReadsFromStdinAndWritesToStdout\Release

E:\om\c\testApps\testSimpleMemoryLeak\Release

e:\om\c\3rd_src\cppunit-1.12.1\examples\cppunittest\release

e:\om\c\3rd_src\cppunit-1.12.1\examples\cppunittest\releasedll