Oracle Solaris Studio 12.2 发行版的新增功能

第 5 章 调试工具

此 Oracle Solaris Studio 发行版的调试工具中的新增功能。

dbx

新增功能和更改的功能

Oracle Solaris Studio 12.2 dbx 中新增或更改了以下功能。

软件更正

本节介绍了此 Oracle Solaris Studio 12.2 dbx 发行版中解决的问题。

  1. 执行 tracei 步骤时无法停止 dbx 执行

    在 Solaris 平台上执行 tracei 步骤时,用户无法通过键入 control-C (^C) 停止 dbx。这实际上是一个 Solaris OS 错误,但是已修改 dbx 以解决此问题。

  2. 无法步入校验过的 debuglog uttsc 二进制文件

    dbx 没有在词法块中正确处理 C++ 名称空间别名。这导致了 dbx 无法步入专门校验的二进制文件的问题。

  3. 对于使用 Purify 校验的多线程程序,dbx 中未提供与线程相关的命令。

    Purify 会向所校验的所有共享库的名称添加后缀。例如,libc.so.1 将变为 libc.so.1_pure_p3_c0_1005282029_510_32。dbx 基于是否存在 libc.so.1(不再加载)做出了决定。现在,dbx 可理解 _pure* 后缀。

  4. dbx 无法取消重整特定 GCC 4.x。sybx 无法从 SLES 10.2 上的核心转储文件提取程序名称。

    在 SuSE Linux Enterprise Server 10.2 系统中,dbx 无法从核心转储文件获取程序,由于更新的 Linux 系统的每个核心转储文件包括两个注释部分,第二个注释部分为空。dbx 将从第一个部分中获取名称。

  5. dbx 在 gcc 代码中查找构造函数的副本

    gcc 有时会为某个成员生成多个条目,其中包括 DWARF debug.pubnames 部分中的一个条目,一个作为原型的条目以及一个摘要实例。看到原型条目的实例并对其进行处理后,dbx 需要删除该原型条目。

  6. dbx 无法从 SLES 10.2 上的核心转储文件中提取程序名称。

    在 SuSE Linux Enterprise Server 10.2 系统中,dbx 无法从核心转储文件获取程序,由于更新的 Linux 系统的每个核心转储文件包括两个注释章节,第二个注释章节为空。dbx 将从第一个部分中获取名称。

  7. dbx 在输出变量时发生 SIGSEGV

    从一些不是使用 -g 选项编译的目标文件 (.o) 创建可执行文件,并且 dbx 需要导入这些目标文件之一来计算变量时,由于 dbx 没有检查此条件,因此导入将失败。

  8. dbx-如果无效,核心转储文件将发生 segv

    dbx 没有检查是否可能存在长度为零的核心转储文件,也没有正常处理该文件。

  9. “内存”和“反汇编程序”窗口可导致 dbx 在 IDE 下崩溃

    如果 IDE 中的调试会话在显示“内存”或“反汇编程序”窗口时结束,然后重新启动,则显示这两个窗口中的任何一个都将导致基础 dbx 崩溃。

dbxtool

dbxtool 中的新增功能和更改的功能如下所示。(有关详细信息,请参见 dbxtool(1) 手册页和《Oracle Solaris Studio 12.2 dbxtool 教程》。)

Discover 和 Uncover

Sun 内存错误搜索工具 (Discover) 是一个用于检测内存访问错误的高级开发工具,是此发行版中新增的工具。

Uncover 是一个易于使用的命令行工具,用于衡量应用程序的代码覆盖率,也是此发行版中新增的工具。

有关详细信息,请参见 discoveruncover(1) 手册页和《Oracle Solaris Studio 12.2 Discover 和 Uncover 用户指南》

DLight

DLight 是供 C/C++ 开发人员使用的基于 Oracle Solaris 动态跟踪 (DTrace) 技术的独立交互式图形观察工具,是此发行版中新增的工具。此工具与 Sun Studio 12 Update 1 中包括的 DLight 工具不是同一个工具。请参见《Oracle Solaris Studio 12.2 DLight 教程》。