gdb使用笔记

例子

1
2
3
gdb mimir
r --config=config
bt

命令

  • 进入GDB  gdb mimir

    mimir是要调试的程序,由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) bt

    bt(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

0%