Documentation Home
> Sun Studio 12:使用 dbx 调试程序
Sun Studio 12:使用 dbx 调试程序
Book Information
索引
数字和符号
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
保
报
编
变
表
剥
捕
操
查
成
程
处
创
从
错
打
单
弹
当
导
地
调
定
动
读
断
段
对
多
发
反
访
非
分
浮
符
跟
更
共
关
过
函
核
忽
恢
会
汇
获
机
寄
继
监
检
建
进
控
库
跨
块
类
连
链
列
美
命
模
目
内
启
清
求
区
确
删
设
声
实
事
数
停
头
退
为
文
系
显
线
限
信
行
修
验
疑
移
异
抑
易
隐
优
预
源
运
在
栈
帧
执
指
中
重
装
子
字
作
前言
第 1 章 dbx 入门
编译调试代码
启动 dbx 和装入程序
在 dbx 中运行程序
使用 dbx 调试程序
检查核心转储文件
设置断点
单步执行程序
查看调用栈
检查变量
查找内存访问问题和内存泄漏
退出 dbx
访问 dbx 联机帮助
第 2 章 启动 dbx
启动调试会话
调试核心转储文件
在相同的操作环境中调试核心转储文件
如果核心转储文件被截断
调试不匹配的核心转储文件
消除共享库问题
消除库问题和调试“不匹配的”核心转储文件
注意事项
使用进程 ID
dbx 启动序列
设置启动属性
将编译时目录映射到调试时目录
设置 dbx 环境变量
创建自己的 dbx 命令
编译调试程序
使用 -g 选项进行编译
使用独立的调试文件
创建独立的调试文件
调试优化代码
编译时未使用 -g 选项的代码
共享库要求使用 -g 选项以获得完全 dbx 支持
完全剥离的程序
退出调试
停止进程执行
从 dbx 中分离进程
中止程序而不终止会话
保存和恢复调试运行
使用 save 命令
将系列调试运行另存为检查点
恢复已保存的运行
已保存运行精确恢复的必要条件
使用 replay 恢复和保存
第 3 章 定制 dbx
使用 dbx 初始化文件
创建 .dbxrc 文件
初始化文件示例
设置 dbx 环境变量
dbx 环境变量和 Korn Shell
第 4 章 查看和导航到代码
导航到代码
导航到文件
导航到函数
从 C++ 二义函数名称列表中选择
在多个具体值中进行选择
打印源码列表
在调用栈中移动以导航到代码
程序位置的类型
程序作用域
反映当前作用域的变量
访问作用域
访问作用域的组件
更改访问作用域
使用作用域转换操作符限定符号
反引号操作符
C++ 双冒号作用域转换操作符
块局部操作符
链接程序名
查找符号
打印符号具体值列表
确定 dbx 使用哪个符号
作用域转换搜索路径
放宽作用域查找规则
查看变量、成员、类型和类
查找变量、成员和函数的定义
查找类型和类的定义
目标文件和可执行文件中的调试信息
目标文件装入
列出模块的调试信息
列出模块
查找源文件和目标文件
第 5 章 控制程序执行
运行程序
将 dbx 连接到正在运行的进程
从进程中分离 dbx
单步执行程序
单步执行
继续执行程序
在指定行恢复程序执行
调用函数
调用安全性
使用 Ctrl+C 停止进程
第 6 章 设置断点和跟踪
设置断点
在源代码行设置 stop 断点
在函数中设置 stop 断点
在 C++ 程序中设置多个断点
在不同类的成员函数中设置断点
在相同类的成员函数中设置断点
在非成员函数中设置多个断点
在对象中设置断点
设置数据更改断点
访问地址时停止执行
变量更改时停止执行
条件停止执行
在断点上设置过滤器
将函数调用的返回值用作过滤器
将变量作用域用作过滤器
将过滤器与条件事件配合使用
跟踪执行
设置跟踪
控制跟踪速度
将跟踪输出定向到文件
在行中设置 when 断点
在共享库中设置断点
列出和清除断点
列出断点和跟踪
使用处理程序 ID 号删除特定断点
启用和禁用断点
效率方面的考虑
第 7 章 使用调用栈
确定在栈中的位置
栈中移动和返回起始位置
在栈中上下移动
栈中上移
栈中下移
移到特定帧
弹出调用栈
隐藏栈帧
显示和读取栈跟踪
第 8 章 求值和显示数据
求变量和表达式的值
验证 dbx 使用的变量
当前函数作用域之外的变量
打印变量、表达式或标识符的值
使用美化打印
打印 C++
对 C++ 程序中未命名参数求值
非关联化指针
监视表达式
关闭显示(取消显示)
为变量赋值
对数组求值
数组分片
C 和 C++ 的数组分片语法
Fortran 数组分片语法
数组片
跨距
第 9 章 使用运行时检查
运行时检查功能
何时使用运行时检查
运行时检查要求
使用运行时检查
启用内存使用和内存泄漏检查
启用内存访问检查
启用所有运行时检查
关闭运行时检查
运行程序
使用访问检查
理解内存访问错误报告
内存访问错误
使用内存泄漏检查
检测内存泄漏错误
可能的泄漏
检查泄漏
理解内存泄漏报告
生成泄漏报告
合并泄漏
修复内存泄漏
利用内存使用检查
抑制错误
抑制的类型
按作用域和类型抑制
抑制上一错误
限制报告的错误数
抑制错误示例
缺省抑制
使用抑制来管理错误
对子进程使用运行时检查
对连接的进程使用运行时检查
结合使用修复并继续功能与运行时检查
运行时检查应用编程接口
在批处理模式下使用运行时检查
bcheck 语法
bcheck 示例
直接在 dbx 中启用批处理模式
疑难解答提示
运行时检查限制
具有更多符号和调试信息时工作效果会更好
SIGSEGV 和 SIGALTSTACK 信号在 x86 平台上受限制
当 8 MB 的所有现有代码中具有足够的补丁区域时工作效果会更好(仅限 SPARC 平台)。
运行时检查错误
访问错误
错误释放 (baf) 错误
重复释放 (duf) 错误
未对齐释放 (maf) 错误
未对齐读 (mar) 错误
未对齐写 (maw) 错误
内存不足 (oom) 错误
从未分配的内存中读 (rua) 错误
从未初始化的内存中读 (rui) 错误
写入到只读内存 (wro) 错误
写入到未分配内存 (wua) 错误
内存泄漏错误
地址位于块内 (aib) 错误
地址位于寄存器内 (air) 错误
内存泄漏 (mel) 错误
第 10 章 修复并继续
使用修复并继续
修复并继续如何操作
使用修复并继续修改源码
修复程序
修复文件
修复后继续
更改已执行的函数
更改一个尚未被调用的函数
更改当前正在执行的函数
更改当前位于栈中的函数
修复后更改变量
修改头文件
修复 C++ 模板定义
第 11 章 调试多线程应用程序
了解多线程调试
线程信息
查看另一线程的上下文
查看线程列表
恢复执行
了解线程创建活动
理解 LWP 信息
第 12 章 调试子进程
连接到子进程
跟随 exec 函数
跟随 fork 函数
与事件交互
第 13 章 调试 OpenMP 程序
编译器如何转换 OpenMP 代码
可用于 OpenMP 代码的 dbx 功能
使用带 OpenMP 代码的栈跟踪
在 OpenMP 代码上使用 dump 命令
OpenMP 代码的执行序列
第 14 章 处理信号
了解信号事件
捕获信号
更改缺省信号列表
捕获 FPE 信号(仅限 Solaris 平台)
确定发生异常的位置
确定导致异常的原因
向程序发送信号
自动处理信号
第 15 章 使用 dbx 调试 C++
使用 dbx 调试 C++
dbx 中的异常处理
异常处理命令
exception [-d | +d] 命令
intercept [-all] [-x] [-set] [ typename] 命令
unintercept [-all] [-x] [ typename] 命令
whocatches typename 命令
异常处理示例
使用 C++ 模板调试
模板示例
C++ 模板的命令
whereis name 命令
whatis name 命令
stop inclass classname 命令
stop infunction name 命令
stop in function 命令
call function_name( parameters) 命令
print 表达式
list 表达式
第 16 章 使用 dbx 调试 Fortran
调试 Fortran
当前过程和文件
大写字母
dbx 会话样例
运行 dbx 会话样例
调试段故障
使用 dbx 找出问题
定位异常
跟踪调用
处理数组
Fortran 95 可分配数组
显示内函数
显示复数表达式
显示区间表达式
显示逻辑操作符
查看 Fortran 95 派生类型
指向 Fortran 95 派生类型的指针
第 17 章 使用 dbx 调试 Java 应用程序
使用 dbx 调试 Java 代码
使用 dbx 调试 Java 代码的功能
使用 dbx 调试 Java 代码的限制
Java 调试的环境变量
开始调试 Java 应用程序
调试类文件
调试 JAR 文件
调试有包装器的 Java 应用程序
将 dbx 连接到正在运行的 Java 应用程序
调试内嵌 Java 应用程序的 C 应用程序或 C++ 应用程序
将参数传递给 JVM 软件
指定 Java 源文件的位置
指定 C 源文件或 C++ 源文件的位置
为使用自定义类加载器的类文件指定路径
在 JVM 软件尚未装入的代码上设置断点
定制 JVM 软件的启动
指定 JVM 软件的路径名
将运行参数传递给 JVM 软件
指定 Java 应用程序的自定义包装器
使用接受命令行选项的自定义包装器
使用不接受命令行选项的自定义包装器
指定 64 位 JVM 软件
调试 Java 代码的 dbx 模式
从 Java 或 JNI 模式切换到本地模式
中断执行时切换模式
在 Java 模式下使用 dbx 命令
dbx 命令中的 Java 表达式求值
dbx 命令使用的静态和动态信息
在 Java 模式和本地模式下具有完全相同语法和功能的命令
在 Java 模式下有不同语法的命令
只在 Java 模式下有效的命令
第 18 章 在机器指令级调试
检查内存的内容
examine 或 x 命令用法
地址
格式
Count
使用地址的示例
dis 命令用法
listi 命令用法
在机器指令级单步执行和跟踪
在机器指令级单步执行
在机器指令级跟踪
在机器指令级设置断点
在地址处设置断点
regs 命令用法
平台特定寄存器
SPARC 寄存器信息
x86 寄存器信息
AMD64 寄存器信息
第 19 章 将 dbx 与 Korn Shell 配合使用
未实现的 ksh-88 功能
ksh-88 的扩展
重命名命令
编辑函数的再绑定
第 20 章 调试共享库
动态链接程序
链接映射
启动序列和 .init 段
过程链接表
修复并继续
在共享库中设置断点
在显式装入的库中设置断点
附录 A 修改程序状态
在 dbx 下运行程序的影响
更改程序状态的命令
assign 命令
pop 命令
call 命令
print 命令
when 命令
fix 命令
cont at 命令
附录 B 事件管理
事件处理程序
事件安全
创建事件处理程序
操作事件处理程序
使用事件计数器
设置事件规范
断点事件规范
in function
at [filename: ]line_number
at address_expression
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
$booting
对特定事件有效的变量
设置事件处理程序示例
为存储到数组成员设置断点
执行简单跟踪
在函数内时启用处理程序 (in function)
确定已执行的行数
确定源代码行执行的指令数
事件发生后启用断点
为重放重置应用程序文件
检查程序状态
捕获浮点异常
附录 C 命令参考
assign 命令
本地模式语法
Java 模式语法
attach 命令
语法
连接到运行中的 Java 进程
bsearch 命令
语法
call 命令
本地模式语法
Java 模式语法
cancel 命令
语法
catch 命令
语法
check 命令
语法
clear 命令
语法
collector 命令
语法
collector archive 命令
语法
collector dbxsample 命令
语法
collector disable 命令
语法
collector enable 命令
语法
collector heaptrace 命令
语法
collector hw_profile 命令
语法
collector limit 命令
语法
collector mpitrace 命令
语法
collector pause 命令
语法
collector profile 命令
语法
collector resume 命令
语法
collector sample 命令
语法
collector show 命令
语法
collector status 命令
语法
collector store 命令
语法
collector synctrace 命令
语法
collector tha 命令
语法
collector version 命令
语法
cont 命令
语法
dalias 命令
语法
dbx 命令
本地模式语法
Java 模式语法
选项
dbxenv 命令
语法
debug 命令
本地模式语法
Java 模式语法
选项
delete 命令
语法
detach 命令
本地模式语法
Java 模式语法
dis 命令
语法
选项
display 命令
本地模式语法
Java 模式语法
down 命令
语法
dump 命令
语法
edit 命令
语法
examine 命令
语法
exception 命令
语法
exists 命令
语法
file 命令
语法
files 命令
本地模式语法
Java 模式语法
fix 命令
语法
fixed 命令
语法
fortran_modules 命令
语法
frame 命令
语法
func 命令
本地模式语法
Java 模式语法
funcs 命令
语法
gdb 命令
语法
handler 命令
语法
hide 命令
语法
ignore 命令
语法
import 命令
语法
intercept 命令
语法
java 命令
语法
jclasses 命令
语法
joff 命令
语法
jon 命令
语法
jpkgs 命令
语法
kill 命令
语法
language 命令
语法
line 命令
语法
示例
list 命令
语法
选项
示例
listi 命令
loadobject 命令
语法
loadobject -dumpelf 命令
语法
loadobject -exclude 命令
语法
loadobject -hide 命令
语法
loadobject -list 命令
语法
loadobject -load 命令
语法
loadobject -unload 命令
语法
loadobject -use 命令
语法
lwp 命令
语法
lwps 命令
语法
mmapfile 命令
语法
module 命令
语法
示例
modules 命令
语法
native 命令
语法
next 命令
本地模式语法
Java 模式语法
nexti 命令
语法
pathmap 命令
语法
示例
pop 命令
语法
print 命令
本地模式语法
Java 模式语法
proc 命令
语法
prog 命令
语法
quit 命令
语法
regs 命令
语法
示例(SPARC 平台)
replay 命令
语法
rerun 命令
语法
restore 命令
语法
rprint 命令
语法
rtc showmap 命令
语法
rtc skippatch 命令
语法
run 命令
本地模式语法
Java 模式语法
runargs 命令
语法
save 命令
语法
scopes 命令
语法
search 命令
语法
showblock 命令
语法
showleaks 命令
语法
showmemuse 命令
语法
source 命令
语法
status 命令
语法
示例
step 命令
本地模式语法
Java 模式语法
stepi 命令
语法
stop 命令
语法
本地模式语法
Java 模式语法
stopi 命令
语法
suppress 命令
语法
sync 命令
语法
syncs 命令
语法
thread 命令
本地模式语法
Java 模式语法
threads 命令
本地模式语法
Java 模式语法
trace 命令
语法
本地模式语法
Java 模式语法
tracei 命令
语法
uncheck 命令
语法
undisplay 命令
本地模式语法
Java 模式语法
unhide 命令
语法
unintercept 命令
语法
unsuppress 命令
语法
unwatch 命令
语法
up 命令
语法
use 命令
watch 命令
语法
whatis 命令
本地模式语法
Java 模式语法
when 命令
语法
本地模式语法
Java 模式语法
wheni 命令
语法
where 命令
本地模式语法
Java 模式语法
whereami 命令
语法
whereis 命令
语法
which 命令
语法
whocatches 命令
语法
© 2010, Oracle Corporation and/or its affiliates