Posted on 2008-06-14 13:37
T.S Liu 阅读(1556)
评论(0) 编辑 收藏 引用 所属分类:
ubuntu
1.what is gdb?
一个调试器,能让你观察到正在运行的程序的某个变量的值,和gcc, emacs组成构建起整个gnu system的3剑客。
2.How it work?
首先要安装,然后就可以 gdb application,进入gdb模式,执行(run)启动例程。(list-显示源码)
3.一个优点
GDB的函数调用是缓式的,也就是说只有当变量真正需要时才会被计算。
int c = add(1,1)
printf("%d",c);
gdb-->run-->print c -1222342. c的值直到打印的时候才会被计算。(这里可能有个开关来控制缓式计算)
4.一个前提
gcc 的时候加上 -g 或者 -ggdb,主要是生成供调试使用的某些信息。(emacs好像默认是关闭这个选项)
5.存在图形调试界面
6.输入help可以查看帮助
help,会显示命令的分类,help 类名
7.how use?
debug 3 program yourself.
8.常用命令(From:http://my.donews.com/tangfl/2006/10/23/gdb-debug-example/)
break NUM 在指定的行上设置断点。
bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
clear 删除设置在特定源文件、特定行上的断点。其用法为clear FILENAME:NUM
continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而 导致停止运行时。
display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
file FILE 装载指定的可执行文件进行调试。
help NAME 显示指定命令的帮助信息。
info break 显示当前断点清单,包括到达断点处的次数等。
info files 显示被调试文件的详细信息。
info func 显示所有的函数名称。
info local 显示当函数中的局部变量信息。
info prog 显示被调试程序的执行状态。
info var 显示所有的全局和静态变量名称。
kill 终止正被调试的程序。
list 显示源代码段。
make 在不退出 gdb 的情况下运行 make 工具。
next 在不单步执行进入其他函数的情况下,向前执行一行源代码。
print EXPR 显示表达式 EXPR 的值。
backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)
breakpoint 在程序中设置一个断点
cd 改变当前工作目录
clear 删除刚才停止处的断点
commands 命中断点时,列出将要执行的命令
continue 从断点开始继续执行
delete 删除一个断点或监测点;也可与其他命令一起使用
display 程序停止时显示变量和表达时
down 下移栈帧,使得另一个函数成为当前函数
frame 选择下一条continue命令的帧
info 显示与该程序有关的各种信息
jump 在源程序中的另一点开始运行
kill 异常终止在gdb 控制下运行的程序
list 列出相应于正在执行的程序的原文件内容
next 执行下一个源程序行,从而执行其整体中的一个函数
print 显示变量或表达式的值
pwd 显示当前工作目录
pype 显示一个数据结构(如一个结构或C++类)的内容
quit 退出gdb
reverse-search 在源文件中反向搜索正规表达式
run 执行该程序
search 在源文件中搜索正规表达式
set variable 给变量赋值
signal 将一个信号发送到正在运行的进程
step 执行下一个源程序行,必要时进入下一个函数
undisplay display命令的反命令,不要显示表达式
until 结束当前循环
up 上移栈帧,使另一函数成为当前函数
watch 在程序中设置一个监测点(即数据断点)
whatis 显示变量或函数类型