Updated 2004/12/06

Sun[tm] Studio 10: dbx Readme


Contents

  1. Introduction
  2. About Sun Studio 10 dbx
  3. New and Changed Features
  4. Software Corrections
  5. Problems and Workarounds
  6. Limitations and Incompatibilities
  7. Documentation Errors

 


A. Introduction

This document describes the software corrections, known problems, limitations, and incompatibilities of this release.

Product Documentation

 


B. About Sun Studio 10 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. This release of dbx is available on the following platforms:

 


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 10 dbx.

The following features were added or changed in Sun Studio 9 dbx.

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 10 release of dbx.

  1. RTC Thinks Copying Padded Structs is a Problem (4460536)

    With runtime checking enabled, dbx reported RUI (read from uninitialized memory) errors when a struct with gaps (holes or pads) between the data fields is copied. This problem has been fixed.

This section describes problems that were fixed in the Sun Studio 9 release of dbx.

  1. dbx can't print register contents or class members for optimized C++ code
  2. bcheck doesn't report all errors correctly
  3. dbx issues error messages (Error 0) while runtime checking sparcv9 code
  4. dbx kills processes it cannot control
  5. stop inclass/inobject take a long time
  6. 64-bit: Access checks on large contiguous heap block fail
  7. dbx fix and continue causes Pro/E to crash with SIGILL
  1. dbx can't print register contents or class members for optimized C++ code (4964695)

    Fixed in Sun Studio 8. dbx can now print registers (for example, $o7) and class members (for example, foo.x) for C++ code compiled with -g -xO4.

  2. bcheck doesn't report all errors correctly (4460648)

    Many out-of-bounds assignments to data structures on the heap that were missed are now being caught by runtime checking.

  3. dbx issues error messages (Error 0) while runtime checking sparcv9 code (4975411)

    Fixed in Sun Studio 8. Executing a 64-bit SPARC program under dbx with access checking enabled sometimes caused dbx to issue error messages such as:

         dbx: read of 4 bytes at address 0x8 failed --- Error 0
         dbx warning: internal handler (-396) made defunct --- could not
             enable event FRET"
    	 

    This has been fixed.

  4. dbx kills processes it cannot control (5022145)

    When dbx needed more memory and was unable to allocate it (the system was out of swap space, for instance), dbx would kill the process being debugged. This particular reported problem has been fixed. There may be other situations in which strange things happen when dbx cannot obtain additional memory. Try to avoid reaching system limits while debugging.

  5. stop inclass/inobject take a long time (4952613)

    Fixed in Sun Studio 8. This performance problem has been fixed.

  6. 64-bit: Access checks on large contiguous heap block fail (4958325)

    dbx was using 32-bit values to store the size of heap blocks. Block sizes larger than that confused dbx. This has been fixed.

  7. dbx fix and continue causes Pro/E to crash with SIGILL (4974233)

    When dbx patched the addresses of replacement functions into the running executable, it sometimes got the addresses wrong. This has been fixed.

 


E. Problems and Workarounds

This section discusses known software problems and possible workarounds for those problems. For updates or patches, check the updated information at http://developers.sun.com/prodtech/cc/support_index.html.

  1. Data Collection Problems When dbx is Attached to a Process
  2. dbx does not check for an RUI coming from a copy constructor
  3. dbx might crash while debugging Java code
  4. dbx crashes on re-debugging of Java code

  1. 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.

  2. dbx does not check for an RUI coming from a copy constructor
  3. Runtime checking can erroneously report RUI (read from uninitialized memory) for inlined C++ copy constructors.

  4. dbx might crash while debugging Java code (4893079)
  5. 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:

  6. dbx crashes on re-debugging of Java code (4801883)
  7. Issuing two debug commands in a row on Java code might cause dbx to crash.

 


F. Limitations and Incompatibilities

This section discusses limitations and incompatibilities with systems or other software. For last-minute information, see the release notes for Solaris platforms at http://developers.sun.com/tools/cc/documentation/ss10_docs/release_notes .html and the release notes for Linux platforms at http://developers.sun.com/tools/cc/documentation/ss10_docs/Linux_release_ notes.html

Sun Studio 10 dbx has the following limitations:


G. Documentation Errata

There is no new information at this time.

 


Copyright © 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.