| Updated 2009/06/09 |
Sun[tm] Studio 12 Update 1: dbx Readme |
Contents
- Introduction
- About Sun Studio 12 dbx
- New and Changed Features
- Software Corrections
- Problems and Workarounds
- Limitations and Incompatibilities
- Documentation Errata
A. Introduction
This document describes the software corrections, known problems, limitations, and incompatibilities of this release.
Product Documentation
- Release Notes: Available at http://docs.sun.com/app/docs/doc/821-0080. Information in the release notes updates and extends information in all readme files.
- Sun Studio Documentation: Product man pages, readmes, tutorials, and manuals can be accessed from http://developers.sun.com/sunstudio/documentation/ss12u1.
- IDE Documentation: Online help for all components of the Sun Studio IDE can be accessed from the Help menu and Help buttons in the IDE. The Sun Studio 12 Update 1 IDE Quick Start Tutorial takes you through the basic steps of using the IDE to develop an application.
- dbxtool Documentation: Online help for dbxtool can be accessed from the Help menu and Help buttons in the tool.
- Developer Resources Portal: For technical articles, documentation, and more, see the SDN Sun Studio portal at http://developers.sun.com/sunstudio.
B. About Sun Studio 12 Update 1 dbx
dbx is an interactive, source-level, command-line debugging tool. You can use it to run a program in a controlled manner and to inspect the state of a stopped program. dbx gives you complete control of the dynamic execution of a program, including the collection of performance data.
C. New and Changed Features
This section describes the new and changed features for dbx.
The following features were added or changed in Sun Studio 12 Update 1 dbx.
- Runtime checking (RTC) now gives information about array out-of-bounds access on the Solaris OS on x86 platforms.
- Runtime Checking (RTC) now supports access, leaks, and memuse checking on the following Linux platforms: SuSE Linux Enterprise Server 10, Red Hat Enterprise Linux 5.
- A new graphical user interface (GUI) for dbx, dbxtool, is included in this release. For information on invoking dbxtool, see the dbxtool(1) man page. dbxtool is a separate GUI from the Sun Studio IDE, but is also based on NetBeans IDE 6.5.1. dbxtool provides access to all the functionality of dbx. It also supports attaching to a process as it starts executing to begin debugging it immediately (see the ss_attach (1) man page), and fixing and continuing, which lets you relink source files after you make changes, without recompiling the entire program.
- dbx can now evaluate function parameters and local variables in optimized code when the compiler provides the needed debugging information.
A few features of dbx are not available for programs compiled with the gcc or g++ compilers, or for programs running on Linux platforms. For more information, see Limitations and Incompatibilities.
D. Software Corrections
This section describes problems that were fixed in the Sun Studio 12 Update 1 release of dbx.
- dbx loads object and mmaps it repeatedly
- Sun Studio 12 dbx is unusable with debug objects in DWARF format
- tdemo memorychecks needs to be brought into conformance
- In Sun Studio 12 dbx stop throw command does not stop execution
- dbx crashes when print is called with an invalid variable
- dbx shows incorrect function parameters when test is compiled with -m64
- Funs and Symbols not eliminated by COMDAT process
- Wrong header file listed when stepping into inline method
- Sun Studio 12 dbx got internal error when debugging a Fortran 90 program
- Sun Studio 12 dbx crashes on startup loading large core file
- dbx takes a long time to load with a huge application
- dbx cannot demangle symbol names produced by Sun Studio 8 compiler
- dbx crashes on startup
- Debugging application causes dbx to crash with segmentation fault on i386 hardware running Solaris 10 OS
- dbx print does not handle calls to constructors
- Sun Studio 12 dbx can't step in a C++ Program compiled with g++ in 64-bit mode
dbx loads object and mmap()s it over and over
dbx tried to open an application and its core file, and did an open()/mmap() operation on the program over and over again. This issue has been fixed. (6726139)
Sun Studio dbx is unusable with debug objects in DWARF format
Sun Studio 12 dbx had a performance issue when debugging a program with a large number of DWARF debug objects. This issue has been fixed. (6667276)
tdemo memorychecks needs to be brought into conformance
The tdemo program memorychecks was designed for use with the Sun Studio 11 IDE. It has been updated to work with Sun Studio 12 Update 1 dmake and dbxtool. (6829561)
In Sun Studio 12 dbx stop throw command does not stop execution
In Sun Studio 12 dbx, the stop throw command did not stop execution of the application being debugged. This issue has been fixed. (6807810)
dbx crashes when print is called with an invalid variable
dbx crashed when the print command was issued with an invalid variable. This issue has been fixed. (6787648)
dbx shows incorrect function parameters when test is compiled with -m64
dbx showed incorrect function parameters when an application was compiled with the -m64 option. This issue has been fixed. (6774789)
Funs and Symbols not eliminated by COMDAT process
Funs and Symbols that should not have appeared in .o files appeared. This issue has been fixed. (6611331)
Wrong header file used when stepping into inline method
dbx listed the wrong header file when stepping into an inline method. This issue has been fixed. (6611330)
Sun Studio 12 dbx got internal error when debugging a Fortran 90 program
Sun Studio 12 dbx got an internal error when debugging a Fortran 90 program containing a symbol with the POINTER attribute. This issue has been fixed. (6590699)
Sun Studio 12 dbx crashes on startup loading large core file
Sun Studio 12 dbx crashed when loading a large core file containing stabs for COMDAT functions. This issue has been fixed. (6694213)
dbx takes a long time to load with a huge application
dbx took a long time to load with a huge application (2 GBytes). The bottleneck was identified and the issue has been fixed. (6627573)
- dbx cannot demangle symbol names produced by a Sun Studio 8 compiler
dbx could not demangle symbol names produced by the Sun Studio 8 C++ compiler. This issue has been fixed. (6632263)
dbx crashes on startup
dbx crashed on startup. The fix for issue 6726139 also fixed this issue. (6717882)
Debugging application causes dbx to crash with segmentation fault on i386 hardware running Solaris 10 OS
dbx crashed with a segmentation fault on i386 hardware running the Solaris 10 OS. This issue has been fixed. (6715539)
dbx print does not handle calls to constructors
The dbx print command could not handle calls to constructors. This issue has been fixed. (6750215)
Sun Studio 12 dbx can't step in a C++ program compiled with g++ in 64-bit mode
dbx could not step in a C++ program compiled with g++ in 64-bit mode due to stack unwinding problems. This issue has been fixed. (6599761)
E. Problems and Workarounds
This section discusses known software problems and possible workarounds for those problems.
- Data Collection Problems When dbx is Attached to a Process
- dbx might crash while debugging Java code
- dbx crashes on re-debugging of Java code
- dbx throws an exception when debugging application on different J2SE than it was built on
- False RUA error reported due to pre-RTC monitoring allocations
- Memory and Disassembler windows can cause dbx to crash when running in the IDE
Data Collection Problems When dbx is Attached to a Process
If you attach dbx to a running process without preloading the collector library, libcollector.so, a number of errors can occur.
- You cannot collect any tracing data: synchronization wait tracing, heap tracing, or MPI tracing. Tracing data is collected by interposing on various libraries, and if libcollector.so is not preloaded, the interposition cannot be done.
- If the program installs a signal handler after dbx is attached to the process, and the signal handler does not pass on the SIGPROF and SIGEMT signals, profiling data and sampling data is lost.
- If the program uses the asynchronous I/O library, libaio.so, clock-based profiling data and sampling data is lost, because libaio.so uses SIGPROF for asynchronous cancel operations. (4397578)
- If the program uses the hardware counter library, libcpc.so, hardware-counter overflow profiling experiments are corrupted because both the collector and the program are using the library. If the hardware counter library is loaded after dbx is attached to the process, the hardware-counter experiment can succeed provided references to the libcpclibrary functions are resolved by a general search rather than a search in libcpc.so.
- If the program calls setitimer(2), clock-based profiling experiments can be corrupted because both the collector and the program are using the timer.
dbx might crash while debugging Java code (4893079)
If you issue a cd command from within the dbx shell, or set the CLASSPATH environment variable or the CLASSPATHX environment variable, dbx might subsequently crash with a segmentation fault.
Workarounds:
- Do not do any of the above.
- Delete all watches (displays) before doing any of the above.
dbx crashes on re-debugging of Java code (4801883)
Issuing two debug commands in a row on Java code might cause dbx to crash.
dbx throws an exception when debugging application on different J2SE than it was built on
dbx throws an exception when you debug an application under a different release of the J2SE technology than the version of the J2SE technology under which you built the application.
False RUA error reported due to pre-RTC monitoring allocations
Under unusual circumstances with multithreaded programs, runtime checking (RTC) reports a false RUA error when it detects access to internal thread-related data that were allocated before RTC began monitoring memory allocations. As these circumstances are part of normal thread switching behavior, these false RUA reports can safely be ignored by using the dbx suppress command.
Memory and Disassembler windows can cause dbx to crash when running in the IDE
When debugging a program with dbx in the Sun Studio IDE, using the Memory and Disassembler windows might cause dbx to crash.
Check the support page on the SDN Sun Studio portal, http://developers.sun.com/sunstudio/support/ for the latest information.
F. Limitations and Incompatibilities
This section discusses limitations and incompatibilities with systems or other software. For last-minute information, see the Release Notes at http://docs.sun.com/app/docs/doc/821-0080
Sun Studio 12 Update 1dbx has the following limitations:
- The following features of dbx are not available on the Linux OS on x86 based systems:
- Fix and continue
- Performance data collection
- Breakpoints on the following events:
- fault
- lastrites
- lwp_exit
- sysin
- sysout
- sync
- throw
- The following features of dbx are not available on the Linux OS on x64 based systems:
- Java debugging
- Debugging 32-bit programs, unless you start dbx with the -x exec32 option.
- dbx cannot follow forked processes on Linux platforms or change to a new program when exec() is called.
- The pipe operator in the Korn shell is limited on Linux platforms. Any dbx command that needs to access the target process does not work as part of a pipeline. For example, the following command is likely to cause dbx to hang:
where | head -1Workarounds:
- Type Ctrl-C to display a new dbx prompt.
- dbx caches a lot of information, so for the above example, the following sequence of commands works:
where where | head -1The following problems may occur when debugging programs on Linux platforms:
- If a program uses clone() to implement its own style of threads, then thread support in dbx does not identify threads correctly.
Workaround:
Use libthread.so rather than clone().- The threads library in the Linux OS uses SIGSTOP signals as part of its internal mechanism. Normally dbx hides these signals from you, and allows you to monitor genuine SIGSTOP signals from other sources. Occasionally the Linux OS uses SIGSTOP in an unexpected way and dbx interprets a system-generated SIGSTOP as a user-generated SIGSTOP.
Workaround:
Use the ignore command to tell dbx not to catch SIGSTOP signals.Sometimes a thread exits, but the Linux OS does not report the exit to dbx. This happens less often when using the new threads library (NPTL).
When a thread exits and the exit is not reported, dbx waits for an event that will never happen and does not display a new prompt. This situation is most likely to occur after you have given a cont command in dbx, but it can also happen after the step up command, step command, next command, and other commands.
Workarounds:
- Sometimes typing Ctrl-C causes dbx to stop waiting and display a new prompt.
- If Ctrl-C does not work, exit dbx and restart it.
- Run-time type information for C++ expressions is not available for programs compiled with the g++ compiler.
- It is not possible to attach to a running process from your .dbxrc file. A .dbxrc file should not contain commands that execute your code. However, you can put such commands in a file, and then use the dbx source command to execute the commands in that file.
- dbx incorrectly demangles pointer to member functions for compat=4. This is not a problem for compat=5.
Workaround: Recompile your program with:
CC -compat=4 -Qoption ccfe -abiopt=pmfun1This flag introduces an ABI change and should not be used in production builds.
- On V9 systems, use of the call command or printing function calls is not working with nested small structure as an argument or as a return value.
- Using older copies of libC.so.5 or libC.so.4 may cause problems for dbx in the area of C++ exceptions. Warning messages about bad stabs and unhandled exceptions may result.
Workaround: Install the latest libC.so.5 on all systems.
- Fortran users should compile with the -stackvar option to take full advantage of runtime checking.
Some programs may not work properly with -stackvar. In such cases, try the -C compiler option, which will turn on array subscript checking without RTC.
- Follow fork may be unreliable for multithreaded applications.
- Use of the call command or printing function calls may cause deadlock situations with multithreaded applications.
- Do not use the fix and continue feature of dbx to change a header file if the file was part of a pre-compiled header (PCH) collection.
- The dbx command line interpreter is an older version of the Korn shell (ksh) that does not support Code Set Independence (CSI). Multi-byte characters can be misinterpreted when typed on the dbx command line.
G. Documentation Errata
There is no new information at this time. Additional information might be made available at http://developers.sun.com/sunstudio/
Copyright © 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.