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 崩溃。