Compiling Programs for Memory Debugging
The first step when preparing a program to load for memory debugging is adding your compiler’s -g debugging command-line option to generate symbol table debugging information; for example:
cc -g -o executable source_program
You can also take advantage of memory debugging on programs that you did not compile using the -g option, or programs for which you do not have source code. However, TotalView may not be able to provide source code information.
Table 20 presents some general considerations.
Table 20: Compiler Considerations
Compiler Option or Library
What It Does
When to Use It
Debugging symbols option (usually -g)
Generates debugging information in the symbol table.
Before debugging any program with TotalView.
Optimization option (usually -O)
Rearranges code to optimize your program’s execution. Some compilers won’t let you use the -O option and the -g option at the same time.Even if your compiler lets you use the -O option, don’t use it when debugging your program, since unexpected results often occur.
After you finish debugging your program.
Multiprocess programming library (usually dbfork)
Uses special versions of the fork() and execve() system calls. In some cases, you need to use the -lpthread option.For more information about dbfork, see Linking with the dbfork Library in the TotalView Reference Guide.
Before debugging a multiprocess program that explicitly calls fork() or execve().
More on compiling programs
Saving action points
The TV::stop_all variable in the TotalView Reference Guide