编辑: Mckel0ve | 2019-10-06 |
www.sun.com 关于本文档的建议请发送到:http://www.sun.com/hwdocs/feedback 使用 dbx 调试程序 Sun? Studio
9 文件号码 817-7882
2004 年8月,修订版 A 请回收 版权所有 ?
2004 Sun Microsystems, Inc.,
4150 Network Circle, Santa Clara, California 95054, U.S.A.保留所有权利. 其使用应遵守许可证条款. 本发行可包含第三方开发的材料. 本产品的某些部分可能是从 Berkeley BSD 系统衍生出来的,并获得了加利福尼亚大学的许可. UNIX 是由 X/Open Company, Ltd. 在美国和 其他国家 / 地区独家许可的注册商标. Sun、 Sun Microsystems、 Sun 徽标、 Java 和JavaHelp 是Sun Microsystems, Inc. 在美国和其他国家 (地区)的商标或注册商标.所有 SPARC 商标的使用均已获得许可,它们是 SPARC International, Inc. 在美国和其他国家 / 地区的商标或注册商标.标有 SPARC 商标的产品均 基于由 Sun Microsystems, Inc. 开发的体系结构. 本服务手册所介绍的产品以及所包含的信息受美国出口控制法制约,并应遵守其他国家 / 地区的进出口法律.严禁将本产品直接或间接地用于 核设施、导弹、生化武器或海上核设施,也不能直接或间接地出口给核设施、导弹、生化武器或海上核设施的最终用户.严禁出口或转口到美 国禁运的国家 / 地区以及美国禁止出口清单中所包含的实体,包括但不限于被禁止的个人以及特别指定的国家 / 地区. 本文档按 原样 提供,对所有明示或默示的条件、陈述和担保,包括对适销性、适用性和非侵权性的默示保证,均不承担任何责任,除非此 免责声明的适用范围在法律上无效.
3 目录 开始之前
25 本书的结构
25 排版惯例
27 Shell 提示符
28 访问 Sun Studio 软件和手册页
28 访问 Sun Studio 文档
30 访问相关的 Solaris 文档
33 开发人员资源
33 与Sun 技术支持联系
34 Sun 欢迎您提出意见和建议
34 1. dbx 入门
35 编译调试代码
35 启动 dbx 和加载程序
36 在dbx 中运行程序
38 使用 dbx 调试程序
39 检查核心文件
39 设置断点
40 单步执行程序
42 查看调用栈
43 4 使用 dbx 调试程序 ?
2004 年8月检查变量
43 查找内存访问问题和内存泄漏
44 退出 dbx
44 访问 dbx 联机帮助
45 2. 启动 dbx
47 启动调试会话
47 调试核心文件
48 在相同的操作环境中调试核心文件
48 如果核心文件被截断
49 调试不匹配的核心文件
49 使用进程 ID
51 dbx 启动序列
52 设置启动属性
52 将编译时目录映射到调试时目录
52 设置 dbx 环境变量
53 创建自己的 dbx 命令
53 编译调试程序
54 调试优化代码
54 编译时未使用 -g 选项的代码
55 共享库要求 -g 选项以获得完全 dbx 支持
55 完全剥离的程序
55 退出调试
55 停止进程执行
56 从dbx 中分离进程
56 中止程序而不终止会话
56 保存和恢复调试运行
57 使用 save 命令
57 将系列调试运行另存为检查点
58 目录
5 恢复已保存的运行
58 使用 replay 恢复和保存
59 3. 定制 dbx
61 使用 dbx 初始化文件
61 创建 .dbxrc 文件
62 初始化文件示例
62 设置 dbx 环境变量
62 dbx 环境变量和 Korn Shell
67 4. 查看和导航到代码
69 导航到代码
69 导航到文件
70 导航到函数
70 打印源码列表
71 在调用栈中移动以导航到代码
71 程序位置的类型
71 程序作用域
72 反映当前作用域的变量
72 访问作用域
72 使用作用域转换操作符限定符号
74 反引号操作符
74 C++ 双冒号作用域转换操作符
75 块局部操作符
75 链接程序名
77 查找符号
77 打印符号具体值列表
77 确定 dbx 使用哪个符号
78 作用域转换搜索路径
78 6 使用 dbx 调试程序 ?
2004 年8月放松作用域查找规则
79 查看变量、成员、类型和类
79 查找变量、成员和函数的定义
80 查找类型和类的定义
81 在目标文件和可执行文件中调试信息
83 目标文件装入
83 列出模块的调试信息
84 列出模块
85 查找源文件和目标文件
85 5. 控制程序执行
87 运行程序
87 将dbx 连接到正在运行的进程
88 从进程中分离 dbx
89 单步执行程序
90 单步执行
90 继续执行程序
90 调用函数
91 使用 Ctrl+C 停止进程
92 6. 设置断点和跟踪
93 设置断点
93 在源代码行设置 stop 断点
94 在函数中设置 stop 断点
95 在C++ 程序中设置多个断点
96 设置数据更改断点
97 在断点上设置过滤器
100 跟踪执行
102 设置跟踪
103 目录
7 控制跟踪速度
103 将跟踪输出定向到文件
103 在行中设置 when 断点
104 在共享库中设置断点
104 列出和清除断点
104 列出断点和跟踪
105 使用处理程序 ID 号删除特定断点
105 启用和禁用断点
105 效率方面的考虑
105 7. 使用调用栈
107 确定在栈中的位置
107 栈中移动和返回起始位置
108 在栈中上下移动
108 栈中上移
108 栈中下移
109 移到特定帧
109 弹出调用栈
109 隐藏栈帧
110 显示和读取栈跟踪
110 8. 求值和显示数据
113 求变量和表达式的值
113 验证 dbx 使用的变量
113 当前函数作用域之外的变量
113 打印变量、表达式或标识符的值
114 打印 C++
114 非关联化指针
115 监视表达式
116 8 使用 dbx 调试程序 ?
2004 年8月关闭显示 (取消显示)
116 给变量赋值
117 求数组的值
117 数组分片
117 数组片
121 跨距
121 9. 使用运行时检查
123 运行时检查功能
123 使用运行时检查的时机
124 运行时检查要求
124 局限性
124 使用运行时检查
125 打开内存使用和内存泄漏检查
125 打开内存访问检查
125 打开所有运行时检查
125 关闭运行时检查
126 运行程序
126 使用访问检查
129 理解内存访问错误报告
130 内存访问错误
130 使用内存泄漏检查
131 检测内存泄漏错误
132 可能的泄漏
132 检查泄漏
133 理解内存泄漏报告
133 修复内存泄漏
135 使用内存使用检查
136 禁止错误
137 目录
9 禁止的类型
138 禁止错误示例
138 缺省禁止
139 使用禁止来管理错误
140 对子进程使用运行时检查
140 对连接的进程使用运行时检查
144 同时使用修复并继续与运行时检查
144 运行时检查应用编程接口
146 在批处理模式下使用运行时检查
147 bcheck 语法
147 bcheck 示例
147 直接在 dbx 中启用批处理模式
148 疑难解答提示
148 运行时检查的
8 兆字节限制
149 运行时检查错误
150 访问错误
150 内存泄漏错误
153 10. 修复并继续
155 使用修复并继续
155 修复并继续如何操作
156 使用修复并继续修改源码
156 修复程序
156 修复后继续
157 修复后更改变量
158 修改头文件
160 修复 C++ 模板定义
160 10 使用 dbx 调试程序 ?
2004 年8月11. 调试多线程应用程序
161 了解多线程调试
161 线程信息
162 查看另一线程的上下文
163 查看线程列表
164 恢复执行
164 理解 LWP 信息
165 12. 调试 OpenMP 程序
167 编译器如何转换 OpenMP 代码
168 OpenMP 代码可用的 dbx 功能
168 使用带 OpenMP 代码的栈跟踪
169 在OpenMP 代码上使用 dump 命令
170 OpenMP 代码的执行序列
171 13. 调试子进程
173 连接到子进程
173 跟随 exec 函数
174 跟随 fork 函数
174 与事件交互
174 14. 处理信号
175 了解信号事件
175 捕获信号
176 更改缺省信号列表
177 捕获 FPE 信号 (仅限 Solaris 平台)
177 在程序中发送信号
178 自动处理信号
179 目录
11 15. 使用 dbx 调试 C++
181 使用 dbx 调试 C++
181 dbx 中的异常处理
182 异常处理命令
182 异常处理示例
183 使用 C++ 模板调试
185 模板示例
186 C++ 模板的命令
187 16. 使用 dbx 调试 Fortran
193 调试 Fortran
193 当前过程和文件
193 大写字母
194 dbx 会话示例
194 调试段故障
197 使用 dbx 来 找到故障
198 定位异常
198 跟踪调用
199 处理数组
200 Fortran
95 可分配数组
201 显示内在函数 20........