Shared Libraries
TotalView supports dynamically linked executables, that is, executables that are linked with shared libraries.
When you start TotalView with a dynamically linked executable, TotalView loads an additional set of symbols for the shared libraries, as indicated in the shell from which you started TotalView. To accomplish this, TotalView:
1. Runs a sample process and discards it.
2. Reads information from the process.
3. Reads the symbol table for each library.
When you create a process without starting it, and the process does not include shared libraries, the PC points to the entry point of the process, usually the start routine. If the process does include shared libraries, TotalView takes the following actions:
Runs the dynamic loader (SunOS 5:
ld.so, Linux:
/lib/ld-linux.so.?).
Sets the PC to point to the location after the invocation of the dynamic loader but before the invocation of C++ static constructors or the
main() routine.
When you attach to a process that uses shared libraries, TotalView takes the following actions:
If you attached to the process after the dynamic loader ran, then TotalView loads the dynamic symbols for the shared library.
If you attached to the process before it runs the dynamic loader, TotalView allows the process to run the dynamic loader to completion. Then, TotalView loads the dynamic symbols for the shared library.
If desired, you can suppress the recording and use of dynamic symbols for shared libraries by starting TotalView with the
-no_dynamic option. Refer to
Chapter 7, TotalView Command Syntax, for details on this TotalView startup option.
If a shared library has changed since you started a TotalView session, you can use the Group > Rescan Library command to reload library symbol tables. Be aware that only some systems such as AIX permit you to reload library information.