2004 年 5 月 27 日更新

Sun[tm] Studio 9:dbx 自述文件


目录

  1. 简介
  2. 关于 Sun Studio 9 dbx
  3. 新特性和更改的特性
  4. 软件更正
  5. 问题和解决办法
  6. 限制和不兼容
  7. 文档错误

 


A. 简介

本文档包含 Sun[tm] Studio 9 dbx 的相关信息。本文档描述了此发行版本中包含的新增功能以及所做的软件更正,并列出了已知问题、限制和不兼容性。本文档中的信息优先于此发行版本各手册中的信息。

产品文档

 


B. 关于 Sun Studio 9 dbx

dbx 是一种交互式源码级命令行调试工具。可用它以可控方式运行程序和检查停止运行的程序的状态。dbx 让您能够完全控制程序的动态执行,包括性能数据的收集。此发行版的 dbx 在下列平台上可用:

 


C. 新增功能和更改的功能

本节描述了 dbx 的新增功能及更改功能。

Sun Studio 9 dbx 中新增和更改了以下功能。

dbx 的新功能不适用于使用 gcc 或 g++ 编译器编译的程序,或在 Linux 平台上运行的程序。有关详细信息,请参见限制和不兼容性

有关 Solaris 平台上其他 Sun Studio 9 组件的信息,参见《新增功能》手册,网址为 http://docs.sun.com

 


D. 软件更正

本节描述了在 Sun Studio 9 发行版本的 dbx 中修复的问题。

  1. dbx 无法打印优化 C++ 代码的注册内容或类成员
  2. bcheck 不能正确报告所有错误
  3. dbx 在对 sparcv9 代码进行运行时检查时发出错误消息 (Error 0)
  4. dbx 终止它无法控制的进程
  5. stop inclass/inobject 花费的时间比较长
  6. 64 位:大型连续堆块上的访问检查失败
  7. dbx 修复并继续导致 Pro/E 因为 SIGILL 而崩溃
  1. dbx 无法打印优化 C++ 代码的注册内容或类成员

    在 Sun Studio 8 中修复。dbx 现在可以打印用 -g -xO4 编译的 C++ 代码的注册表(例如,$o7)和类成员(例如,foo.x)。

  2. bcheck 不能正确报告所有错误 (4460648)

    对丢失的堆上的数据结构的出站指定现在被运行时检查所捕获。

  3. dbx 在对 sparcv9 代码进行运行时检查时发出错误消息 (4975411)

    在 Sun Studio 8 中修复。在启用访问检查的情况下在 dbx 下执行 64 位 SPARC 程序有时会导致 dbx 发出错误消息,比如:

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

    它已被修复。

  4. dbx 终止它无法控制的进程 (5022145)

    dbx 需要更多的内存而无法分配它时(例如,系统交换空间不足),dbx 将终止正在调试的进程。这一特殊的问题已被修复。当 dbx 无法获取附加内存时,可能会出现其他奇怪情况。在调试期间要尽量避免达到系统极限。

  5. stop inclass/inobject 花费的时间比较长 (4952613)

    在 Sun Studio 8 中修复。该性能问题已被修复。

  6. 64 位:大型连续堆块上的访问检查失败 (4958325)

    dbx 过去使用 32 位值来存储堆块的大小。堆块的尺寸要比这个混淆的 dbx 大。它已被修复。

  7. dbx 修复并继续导致 Pro/E 因为 SIGILL 而崩溃 (4974233)

    dbx 将替换函数的地址添加到运行的可执行文件中时,有时会让地址出错。它已被修复。

 


E. 问题和解决办法

本节讨论了已知的软件问题及其可能的解决方法。有关更新信息,请查看开发人员门户,网址:http://developers.sun.com/prodtech/cc/support_index.html

  1. dbx 连接到进程时发生数据收集问题
  2. RTC 将复制填充结构视为错误
  3. dbx 不检查来自拷贝构造函数的 RUI
  4. dbx 在调试 Java 代码时可能会崩溃
  5. dbx 在重新调试 Java 代码时崩溃

  1. dbx 连接到进程时发生数据收集问题

    如果将 dbx 连接到一个正在运行的进程而没有预装收集器库 libcollector.so,可能会发生多种错误。

    • 无法收集任何跟踪数据:同步等待跟踪、堆跟踪或 MPI 跟踪。跟踪数据是通过对各个库进行插入操作而收集的。如果未预加载 libcollector.so,则无法执行插入操作。
    • 如果程序在 dbx 连接到进程后安装信号处理程序,并且该信号处理程序不传递 SIGPROFSIGEMT 信号,分析数据和抽样数据将丢失。
    • 如果程序使用异步 I/O 库 libaio.so,基于时钟的分析数据和抽样数据将丢失,因为 libaio.so 会使用 SIGPROF 执行异步取消操作。 (4397578)
    • 如果程序使用硬件计数器库 libcpc.so,则硬件计数器上溢分析实验将会被破坏,因为收集器和程序都在使用该库。如果硬件计数器库是在 dbx 连接到进程之后装入的,硬件计数器实验则可成功(只要对 libcpclibrary 函数的引用通过广义搜索而不是 libcpc.so 中的搜索来解析)。
    • 如果程序调用 setitimer(2),基于时钟的分析实验将会被破坏,因为收集器和程序都在使用该计时器。

  2. 6. RTC 考虑复制填充的结构是一个问题 (4460536)

    在启用运行时检查的情况下,如果复制数据字段之间存在间隙(漏洞或填充)的结构,dbx 报告 RUI(从未初始化的内存中读)错误。

  3. dbx 不检查来自拷贝构造函数的 RUI
  4. 运行检查可能会错误地报告内联 C++ 拷贝构造函数的 RUI(从未初始化内存读取)。

  5. dbx 在调试 Java 代码时可能崩溃 (4893079)
  6. 如果从 dbx shell 内部发布一条 cd 命令,或者设置 CLASSPATH 环境变量或 CLASSPATHX 环境变量,则 dbx 可能因段故障而崩溃。

    解决办法:

  7. dbx 在重新调试 Java 代码时崩溃 (4801883)
  8. 在 Java 代码的一行内发布两条 debug 命令可能导致 dbx 崩溃。

 


F. 限制和不兼容

Sun Studio 9 dbx 具有以下限制:


G. 文档错误

目前没有新的信息。

 


版权所有 © 2004 Sun Microsystems, Inc. 保留所有权利。必须依据许可证条款使用。