文档信息
前言
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. 命令参考
索引
事件规范和修饰符的语法如下:
受驱动的关键字
基于 ksh 惯例;所有内容均拆分为由空格分隔的多个字
表达式可能会有内嵌空格,这便会导致不明确情况发生。例如,假设有以下两个命令:
when a -temp when a-temp
在第一个示例中,尽管应用程序可能有一个名为 temp 的变量,但 dbx 解析器仍会优先将 -temp 作为修饰符来解析事件规范。在第二个示例中,a-temp 作为整体传递给语言特定的表达式解析器。必须存在名为 a 和 temp 的变量,否则就会发生错误。可使用括号强制解析。