GDB用法小结
1. gdb exe
使得exe程序运行在debug环境下
2. break functiona
在functiona函数处设置端点
3. run
让程序从main入口执行到断点functiona
4. n
next,单步执行,相当于VC中的调试命令step over
5. s
step into,进入子函数,察看子函数的执行情况
6. bt
backtrace查看堆栈的情况
7. p variant
print出变量variant的值
8. l
list命令,查看当前的行的上下文,默认显示10行
9. p variant=correct value
如果发现此时的variant的值不正确,我们可以给variant设置一个正确的值(correct value)
然后,用第10项中的命令继续执行
10. c
continue 继续执行,可以是经过按照更改后的值继续执行。相当于VC中的F5
11. quit or Ctrl+C
退出gdb
在gdb的命令行下,可以通过file exeprogram 载入要debug的文件
gdb -silent 表示不提示GDB的版权信息 or gdb -q (quiet)
gdb -h 显示gdb的帮助
12 About Help
gdb>help
apropos args //查找所有的GDB命令以及它的文档中包含args的表达式
complete i //列出所有以i开头的gdb命令
针对某一个命令的帮助是help command ,例如help info
显示info的用法,info 可以查看args,breakpoints,stack......
show命令只要是显示gdb的信息,如show version
13 break
break function
在某一个函数的地方设置端点
break linenum
在确定的某一行的地方设置断点
break +offset
-offset
break *address在某一个地址设置断点
14 watch
watch expr
查看某一个表达式
rwatch expr
查看某一个表达式,并在读入该表达式的时候,设置断点
15 查看源代码
list lineNum 在lineNum的前后源代码显示出来
list + 列出当前行的后面代码行
list - 列出当前行的前面代码行
list function
set listsize count
设置显示代码的行数
show listsize
显示打印代码的行数
list first,last
显示从first到last的源代码行
16 编辑源代码
edit 编辑当前所在的行
edit num
edit function 编辑包含函数定义的文件
edit filename:function
设置编辑器
EDITOR=/usr/bin/vi
export EDITOR
gdb ....
Question
1)no symbol table is loaded!
A: 编译后的二进制文件没有包含debug信息,重编译加上-g选项,gcc -g