Debugging large programs can exhaust the swap space on your machine. If you run out of swap space, NextGen TotalView for HPC exits with a fatal error, such as:
Fatal Error: Out of space trying to allocate
This error indicates that TotalView failed to allocate dynamic memory. It can occur anytime during a debugging session. It can also indicate that the data size limit in the C shell is too small. You can use the C shell’s limit command to increase the data size limit. For example:
limit datasize unlimited
Another error you might see is:
job_t::launch, creating process: Operation failed
This error indicates that the fork() or execve() system call failed while TotalView was trying to create a process to debug.
To find out how much swap space has been allocated and is currently being used, use either the swapon or top commands.
To create additional swap space, use the mkswap(8) command.
Shared Libraries
NextGen TotalView for HPC supports dynamically linked executables, that is, executables that are linked with shared libraries.
When you start NextGen TotalView for HPC 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: /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, NextGen TotalView for HPC 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 the chapter”NextGen TotalView for HPC Command Syntax” in the NextGen TotalView for HPC Reference Guide for details on this startup option.