Dynamic Libraries Page
The controls within this page manage two different library behaviors:
• The top controls allow you to control if TotalView should stop execution when your program and TotalView loads a named shared library. In most cases, you would do this so that you can set a breakpoint.
• The bottom controls tell TotalView how much information is should read when it loads a shared library. (See
"Symbol Loading".)
NOTE >> The Default button at the bottom of this page sets all fields on this page to their initial values.
Stopping Before Execution Begins
The controls in the top area tell TotalView if it should ask you if it is alright to load dynamic libraries. If it is OK, you can indicate which libraries TotalView should ask questions about before loading and which it should just load.
Ask to stop when loading dynamic libraries
If selected, TotalView uses the shared library path and file suffix to determine if it should ask if it should stop processes that load a shared library. The decision it makes is based on what you type in the two text areas.
For more information, see the
TV::ask_on_dlopen variable.
When the file suffix matches
Enter the suffixes that TotalView uses when it decides whether it will ask if it should stop the process when it loads a dynamic library. If the library being opened has a suffix that is on this list, TotalView asks if it should stop the process.
Each suffix must reside on its own line. By default, this list is empty. This list is global and applies to all processes in this debugging session.
For more information, see the
TV::dll_stop_prefix variable.
And the file path prefix doesn’t match
Enter prefixes that TotalView uses when it decides whether it will ask if it should stop the process when it loads a dynamic library. If the shared library being opened has a prefix that is on this list, TotalView does not ask if should stop the process.
Each prefix must be on its own line. By default, this list is empty. The list is global and it applies to all processes you examine in this debugging session.
For more information, see the
TV::dll_ignore_prefix variable.
Symbol Loading
The three items on the Load from these libraries list control whether TotalView reads loader and debugging symbols when it opens a library. Here’s what placing entries into these areas means:
all symbols
(default) TotalView reads all symbols. Only enter a library name if it is excluded by a wildcard in the loader symbols and no symbols areas.
For more information, see the
TV::dll_read_all_symbols variable.
loader symbols
TotalView only reads a library’s loader symbols. If your program uses a number of large shared libraries that you will not be debugging, you might set this to *. You would then enter the names of DLLs that you need to debug in the all symbols area.
For more information, see the
TV::dll_read_loader_symbols_only variable.
no symbols
Only name libraries on this list if you really need to increase performance. If TotalView doesn’t load a library’s symbols, it may not be able to create a backtrace through this library.
For more information, see the
TV::dll_read_no_symbols variable.
When reading a library, TotalView looks at these lists in the following order:
1. all symbols
2. loader symbols
3. no symbols
That is, TotalView processes these lists in order. This means that if you name a library in more than one list, TotalView ignores the second (or third) references to the library.
When entering library names, you can use the * and ? wildcard characters. For example:
*mystuff*
Matches ./lib/libmystuff.so as well as anything else that contains the mystuff string in its filename.
/home/myname/dev/*
Matches any library in the /home/myname/dev directory.
*
Matches every library that TotalView would read.
If your program stops in a library that has not had its symbols read, TotalView reads its symbols before reporting the error that caused execution to stop.
You can tell TotalView that it should automatically read a library’s symbols when it stops by setting the
TV::auto_read_symbol_at_stop variable.
Load All Symbols in Stack Context Menu Command
If you place the cursor in the Stack Trace Pane and click your right mouse button, TotalView displays the Load All Symbols in Stack command. Selecting this command tells TotalView to examine the stack trace for the current thread and finds any frames where the thread was executing in a library that has not had all its symbols read. If TotalView locates any libraries, it reads in their debugging symbols.
If, while reading in these libraries, it discovers other libraries that must be read in, it will also read in these additional symbols.
For information on other Preference pages, see: