GDB学习笔记
GDB是UNIX及UNIX-like下的调试工具。GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能。
一、功能
一般来说,GDB主要帮助你完成下面四个方面的功能:
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。
二、使用语法
gdb [ <programfile> [ <corefile> | <pid> ] ]
<programfile> 可执行的二进制文件
<corefile> 核心转储程序(core dump, crash records, 故障记录)
<pid> 运行程序的进程id
三、编译时要用上-g选项
gcc -g <programfile>
四、基本命令
1.file [<file>] 装入想要调试的可执行程序<file>
2.run [<args>] 运行选择的程序并将参数<args>传给它
3.attach <pid> 将gdb attach到一个运行时的进程<pid>,并调试它
4.kill 终止正在调试的程序
5.quit 终止gdb
6.help [<topic>] 帮助
五、单步跟踪和从断点开始继续执行
1.c[ontinue] 从断点开始继续执行
2.s[tep] 执行下一个源程序行,必要时进入下一个函数
3.n[ext] 在不单步执行进入其他函数的情况下,向前执行一行源代码
4.finish 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参考值等信息。
六、使用断点
1.b[reak] [<where>] 在代码里设置断点,这将使程序执行到这里时被挂起。<where>可以是16进制地址、函数名、行号、相对的行位移
2.[r]watch <expr> 为表达式(变量)expr设置一个观察点,一旦表达式值被写或读时,马上停住程序
3.info break[points] 列出当前所有的断点
4.clear [<where>] 去除一个指定的断点
七、查看相关的命令
1.list [<where>] 列出产生执行文件的源代码部分<where>
2.search <regexp> 在源文件中搜索正规表达式<regexp>
3.backtrace [<n>] 显示程序中当前位置和表达如何到达当前位置的栈跟踪<n>
4.info [<what>] 显示与该程序有关的各种信息<what>(可以是局部变量和函数参数)
5.p[rint] [<expr>] 打印变量或是表达式的值<expr>
八、修改数据和控制路径的命令
1.set <name> <expr> 给变量或参数赋值
2.jump <where> 在源程序中的另一个<where>开始运行