JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:使用 dbx 调试程序     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  dbx 入门

2.  启动 dbx

3.  定制 dbx

4.  查看和导航到代码

5.  控制程序执行

6.  设置断点和跟踪

7.  使用调用堆栈

8.  求值和显示数据

9.  使用运行时检查

10.  修复并继续

11.  调试多线程应用程序

12.  调试子进程

13.  调试 OpenMP 程序

14.  处理信号

15.  使用 dbx 调试 C++

16.  使用 dbx 调试 Fortran

17.  使用 dbx 调试 Java 应用程序

18.  在机器指令级调试

19.  将 dbx 与 Korn Shell 配合使用

20.  调试共享库

A.  修改程序状态

B.  事件管理

事件处理程序

事件安全

创建事件处理程序

操作事件处理程序

使用事件计数器

设置事件规范

断点事件规范

in function

at [filename: ]line_number

at address_expression

infile filename

infunction function

inmember function inmethod function

inclass classname [-recurse | -norecurse]

inobject object-expression [-recurse | -norecurse]

数据更改事件规范

access mode address-expression [, byte-size-expression ]

change variable

cond condition-expression

系统事件规范

dlopen [ lib-path ] dlclose [ lib-path ]

fault fault

lwp_exit

sig signal

sig signal sub-code

sysin code | name

sysout code | name

sysin | sysout

执行进度事件规范

exit exitcode

next

returns

returns function

step

其他事件规范

attach

detach

lastrites

proc_gone

prog_new

stop

sync

syncrtld

thr_create [thread_id ]

thr_exit

throw

throw type

throw -unhandled

throw -unexpected

timer seconds

事件规范修饰符

-if condition

-resumeone

-in function

-disable

-count n -count infinity

-temp

-instr

-thread thread_id

-lwp lwp_id

-hidden

-perm

分析和二义性

使用预定义变量

when 命令有效的变量

$handlerid

when 命令和特定事件有效的变量

事件处理程序示例

为存储到数组成员设置断点

执行简单跟踪

在函数内时启用处理程序 (in function)

确定已执行的行数

确定源代码行执行的指令数

事件发生后启用断点

重放重置应用程序文件

检查程序状态

捕获浮点异常

C.  宏

D.  命令参考

索引

事件安全

尽管 dbx 向您提供了通过事件机制实现的一组丰富的断点类型,但它还会在内部使用许多事件。通过在发生其中一些内部事件时停止,可以很容易地中止 dbx 的内部操作。如果在这些情况下修改进程状态,中止的可能性会更高。请参见附录 A调用安全性

dbx 可以保护自身在某些情况下(但不是所有情况下)中止操作。一些事件按照低级别事件来实现。例如,所有步进操作都是基于 fault FLTTRACE 事件。因此,发出 stop fault FLTTRACE 命令会中止步进操作。

在以下调试阶段,dbx 不能处理用户事件,因为这些事件会干扰某些需要非常谨慎的内部协调操作。这些阶段包括:

在许多情况下,可以使用 when 命令而非 stop 命令,以及回显以其他方式交互获得的信息。

dbx 通过以下方式保护自身:

例如:...stopped in munmap at 0xff3d503c 0xff3d503c: munmap+0x0004: ta %icc,0x00000008 dbx76: warning: 'stop' ignored -- while doing rtld handshake

仅忽略中断作用(包括 $firedhandlers 变量中的记录)。计数器或过滤器仍发挥作用。要在这种情况下停止,请将环境变量 event_safety 设置为 off