例子
1 | gdb mimir |
命令
进入GDB
gdb mimirmimir是要调试的程序,由gcc mimir.c -g -o mimir生成。进入后提示符变为(gdb) 。查看源码
(gdb) l如果需要查看在其他文件中定义的函数,在l后加上函数名即可定位到这个函数的定义及查看附近的其他源码。
运行代码
(gdb) r设置断点
(gdb) b filename:function/linenum这样会在运行到该文件的function或者linenum时停止,可以查看变量的值、堆栈情况等。想看那个函数就直接下断点进去就好。
查看断点处情况
(gdb) info b可以通过
info b来查看断点处情况,可以设置多个断点。查看函数堆栈
(gdb) btbt(backtrace)命令是很有用的一个命令,当程序运行过程中崩了的时候可以使用该命令快速定位。显示变量值
(gdb) p n在程序暂停时,键入
p(print) 变量名即可。GDB在显示变量值时都会在对应值之前加上$N标记,它是当前变量值的引用标记,以后若想再次引用此变量,就可以直接写作$N,而无需写冗长的变量名。观察变量
(gdb) watch n在某一循环处,往往希望能够观察一个变量的变化情况,这时就可以键入命令
watch来观察变量的变化情况,GDB在n设置了观察点。单步运行
(gdb) n/s [count]n(next)和s(step)都表示单步跟踪,如果有函数调用s进入该函数n不进入。count表示执行其后的n条指令。程序继续运行
(gdb) c/fg [ignore-count]c(continue)/fg使程序继续往下运行,直到再次遇到断点或程序结束。ignore-count表示忽略其后n个断点。退出GDB
(gdb) q
