Skip Navigation Links | |
Exit Print View | |
Oracle Solaris Studio 12.3: Debugging a Program With dbx Oracle Solaris Studio 12.3 Information Library |
Debugging a Core File in the Same Operating Environment
If Your Core File Is Truncated
Debugging a Mismatched Core File
Eliminating Shared Library Problems
Mapping the Compile-time Directory to the Debug-time Directory
Setting dbx Environment Variables
Creating Your Own dbx Commands
Code Compiled Without the -g Option
Shared Libraries Require the -g Option for Full dbx Support
Killing a Program Without Terminating the Session
Saving and Restoring a Debugging Run
Saving a Series of Debugging Runs as Checkpoints
Saving and Restoring Using replay
4. Viewing and Navigating To Code
5. Controlling Program Execution
6. Setting Breakpoints and Traces
8. Evaluating and Displaying Data
11. Debugging Multithreaded Applications
16. Debugging Fortran Using dbx
17. Debugging a Java Application With dbx
18. Debugging at the Machine-Instruction Level
19. Using dbx With the Korn Shell
You must prepare your program for debugging with dbx by compiling it with the -g or -g0 option.
The -g option instructs the compiler to generate debugging information during compilation.
For example, to compile using the C++ compiler, type:
% CC -g example_source.cc
For the C++ compiler:
The -g option alone (with no optimization level specified) turns on debugging information and turns off inlining of functions.
The -g option used with the -O option or the -xOlevel option turns on debugging information and does not turn off inlining of functions. This set of options produces limited debugging information and inlined functions.
The -g0 (zero) option turns on debugging information and does not affect inlining of functions. You cannot debug inline functions in code compiled with the -g0 option. The -g0 option can significantly decrease link time and dbx start-up time (depending on the use of inlined functions by the program).
To compile optimized code for use with dbx, compile the source code with both the -O (uppercase letter O) and the -g options.
dbx lets you use options in the objcopy command on Linux platforms and the gobjcopy command on Solaris platforms to copy the debugging information from an executable to a separate debug file, strip that information from the executable, and create a link between these two files.
dbx searches for the separate debug file in the following order and reads the debugging information from the first file it finds:
The directory that contains the executable file.
A subdirectory named debug in the directory that contains the executable file.
A subdirectory of the global debug file directory, which you can view or change if the dbx environment variable debug_file_directory is set to the path name of the directory. The default value of the environment variable is /usr/lib/debug.
For example, to create a separate debug file for executable a.out, you would do the following.
objcopy --only-keep-debug a.out a.out.debug
objcopy --strip-debug a.out
objcopy --add-gnu-debuglink=a.out.debug a.out
On Solaris platforms, use the gobjcopy command. On Linux platforms, use the objcopy command.
On a Linux platform, you can use the command objcopy -help to find out whether or not the -add-gnu-debuglink option is supported on the platform. You can replace the -only-keep-debug option of the objcopy command with the command cp a.out a.out.debug to make a.out.debug a fully executable file.