UNIX C/C++调试简介
Gdb基本使用及常用调试技巧
史红哲
2004/06/01
课程简介
调试的基本方法
GDB的基本使用
实战GDB
常见内存问题
CORE文件
DAEMON进程
CGI的调试
调试的基本方法
静态代码检查
日志
日志级别
根据日志定位错误
使用一些grep,find等使用工具快速定位程序错误
动态执行分析(GDB等其它工具)
调试 vs 测试
调试是发现了错误后解决错误的过程
测试是试图找出程序中的错误的过程
Gdb简介
什么是GDB?
gdb是一款自由软件,最早由Richard Stallman编写。
主要用来C/C++程序源码级的调试。
GDB能做什么?
* 运行程序,可以指定参数
* 设置断点
* 察看内存及堆栈的信息
* 动态改变程序的行为
* 单步执行(Step)
Gdb的基本使用
编译
* 加上–g 选项
* 注意–g和-O选项,尽量不要同时加
运行
* msgdev ~$ gdb program
* 可以不带任何参数运行gdb, 然后在 gdb的提示符下用 file program 装载程序
退出
* gdb > quit
Gdb常用命令行选项
-d
指定source的目录,gdb会到指定的目录中搜索源文件
-args
指定要调试的程序的命令行参数
-xdb
采用兼容XDB的方式(XDB是HP机上的Debugger)
-core
指定core文件
-pid
指定进程号,然后attach。会停止进程的执行,受到gdb的控制
Gdb基本指令
断点
数据
文件
运行
堆栈
状态
断点
Break 设置断点,根据行号或者函数名
break 文件名:行号[if 条件表达式]
break 函数名
break 类名::成员函数名
Condition 为断点设置条件
condition 断点号表达式
Watch 跟踪变量
watch 表达式
表达式中的变量必须是在当前环境下可见的
Delete breakpoints
delete breakpoints 断点号
Enable/disable
Tip: 使用help breakpoints获取指令
察看数据
Print
prinf 表达式
Ptype
ptype 变量
X
x/FMT ADDRESSS
FMT=数值+格式+类型
数值是一个整数,格式和类型都是一个字符
格式: o(octal), x(hex),d(decimal),u(unsigned decimal), t(binary), f(float), a(addresss), I(instruction), c(char), s(string)
类型: b(byte), h(halfword), w(word), g(giant, 8bytes)
ADDRESSS可以是表达式
Call
调用函数,需要在运行的过程中才能够使用。
文件
Directory
增加源文件搜索目录
core-file
加载CORE文件
File
加载可执行文件
List
显示文件内容
Load
symbol-file
GDB快速上手培训 来自淘豆网m.daumloan.com转载请标明出处.