此 Oracle Solaris Studio 发行版的调试工具中的新增功能。
Oracle Solaris Studio 12.2 dbx 中新增或更改了以下功能。
改进了对优化代码调试的支持:
x86 平台上提供了有关查找参数和局部变量的信息。
提供了针对 SPARC 平台的有关内联函数的信息。
新增了用于显示有关 OpenMP 区域、任务和线程集的信息的命令:
omp_pr [parallel_region_id] [-ancestors|-tree] [-v]
输出有关当前并行区域或由 parallel_region_id 指定的区域的说明,包括并行区域 ID、类型(隐式或显式)、状态(活动或非活动)、组大小(线程数)和程序位置(程序计数器地址)。
omp_tr [task_region_id] [-ancestors|-tree]
输出当前任务区域或由 task_region_id 指定的区域的说明,包括任务区域 ID、类型(隐式或显式、绑定或未绑定)、状态(已生成、正在执行或正在等待)、遇到的线程、正在执行的线程、程序位置、未完成的子线程和父线程。
omp_team [parallel_region_id]
输出当前组中的所有线程。如果已指定 parallel_region_id,将输出该区域的组中的线程。
omp_loop
输出当前循环的说明,包括调度类型(静态或动态)、等待或非等待、是否有序、界限和迭代数。此命令只能从当前正在执行循环的线程发出。
omp_serialize
将当前线程遇到的下一个并行区域序列化。
OpenMP 程序的现有命令的扩展:
print -s expression
thread -info
what is name
where
新增的 OpenMP 事件:
omp_barrier [type] [state]
跟踪线程进入屏障事件。
omp_taskwait [state]
跟踪线程进入任务等待事件。
omp_ordered [state]
跟踪线程进入有序区域事件。
omp_critical
跟踪线程进入重要区域事件。
omp_atomic [state]
跟踪线程进入 atomic 区域事件。
omp_flush [type]
跟踪线程执行刷新事件。
omp_task [state]
跟踪任务的创建和终止。
omp_master
跟踪主线程进入主区域事件。
omp_single
跟踪线程进入单个区域事件。
本节介绍了此 Oracle Solaris Studio 12.2 dbx 发行版中解决的问题。
执行 tracei 步骤时无法停止 dbx 执行
在 Solaris 平台上执行 tracei 步骤时,用户无法通过键入 control-C (^C) 停止 dbx。这实际上是一个 Solaris OS 错误,但是已修改 dbx 以解决此问题。
无法步入校验过的 debuglog uttsc 二进制文件
dbx 没有在词法块中正确处理 C++ 名称空间别名。这导致了 dbx 无法步入专门校验的二进制文件的问题。
对于使用 Purify 校验的多线程程序,dbx 中未提供与线程相关的命令。
Purify 会向所校验的所有共享库的名称添加后缀。例如,libc.so.1 将变为 libc.so.1_pure_p3_c0_1005282029_510_32。dbx 基于是否存在 libc.so.1(不再加载)做出了决定。现在,dbx 可理解 _pure* 后缀。
dbx 无法取消重整特定 GCC 4.x。sybx 无法从 SLES 10.2 上的核心转储文件提取程序名称。
在 SuSE Linux Enterprise Server 10.2 系统中,dbx 无法从核心转储文件获取程序,由于更新的 Linux 系统的每个核心转储文件包括两个注释部分,第二个注释部分为空。dbx 将从第一个部分中获取名称。
dbx 在 gcc 代码中查找构造函数的副本
gcc 有时会为某个成员生成多个条目,其中包括 DWARF debug.pubnames 部分中的一个条目,一个作为原型的条目以及一个摘要实例。看到原型条目的实例并对其进行处理后,dbx 需要删除该原型条目。
dbx 无法从 SLES 10.2 上的核心转储文件中提取程序名称。
在 SuSE Linux Enterprise Server 10.2 系统中,dbx 无法从核心转储文件获取程序,由于更新的 Linux 系统的每个核心转储文件包括两个注释章节,第二个注释章节为空。dbx 将从第一个部分中获取名称。
dbx 在输出变量时发生 SIGSEGV
从一些不是使用 -g 选项编译的目标文件 (.o) 创建可执行文件,并且 dbx 需要导入这些目标文件之一来计算变量时,由于 dbx 没有检查此条件,因此导入将失败。
dbx-如果无效,核心转储文件将发生 segv
dbx 没有检查是否可能存在长度为零的核心转储文件,也没有正常处理该文件。
“内存”和“反汇编程序”窗口可导致 dbx 在 IDE 下崩溃
如果 IDE 中的调试会话在显示“内存”或“反汇编程序”窗口时结束,然后重新启动,则显示这两个窗口中的任何一个都将导致基础 dbx 崩溃。
dbxtool 中的新增功能和更改的功能如下所示。(有关详细信息,请参见 dbxtool(1) 手册页和《Oracle Solaris Studio 12.2 dbxtool 教程》。)
“选项”窗口中的全局调试选项已重新排列到会话启动属性和窗口属性中。删除了四个属性设置:“程序停止时显示‘Dbx 命令’选项卡”、“保存并恢复断点”、“允许单步启动进程”和“气球表达式计算”。
“局部变量”窗口现在为“变量”窗口。
“新建监视”按钮和“表达式计算”按钮已从工具栏中删除。
“重新启动”按钮添加到了工具栏中。
在“新建断点”对话框中:LWP、语言模式和临时复选框已删除。“条件”、“计数”、"WhileIn" 和“线程”字段已重新排序。“更多/更少”按钮已删除。
如果有多个调试会话,“会话”窗口将自动打开。
“调用栈”窗口最多可显示 40 个帧;用户可单击“更多”查看 40 个以上的帧。
“变量”窗口和“监视”窗口可显示静态成员。
“变量”窗口中有一个用于仅显示自动变量的按钮。
“变量”窗口中有一个“新建监视”按钮。
“反汇编程序”窗口已重命名为“反汇编”。
Sun 内存错误搜索工具 (Discover) 是一个用于检测内存访问错误的高级开发工具,是此发行版中新增的工具。
Uncover 是一个易于使用的命令行工具,用于衡量应用程序的代码覆盖率,也是此发行版中新增的工具。
有关详细信息,请参见 discover 和 uncover(1) 手册页和《Oracle Solaris Studio 12.2 Discover 和 Uncover 用户指南》。
DLight 是供 C/C++ 开发人员使用的基于 Oracle Solaris 动态跟踪 (DTrace) 技术的独立交互式图形观察工具,是此发行版中新增的工具。此工具与 Sun Studio 12 Update 1 中包括的 DLight 工具不是同一个工具。请参见《Oracle Solaris Studio 12.2 DLight 教程》。