team4-gdb-tutorial

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

快速学会使用gdb by Dai

 * 编译时使用g++ -g xxx.cpp
 * 进入gdb:gdb a.out
 * 如果看RTE,直接输入r(run的缩写)就可以了。如果输入在文件里,输入r < a.in(Win下未必适用)
 * 如果要下断点,在r之前输入b <行号>。例如150行想停下来,键入b 150,然后再r。
 * 有时候RTE gdb没法正常捕捉,需要结合断点使用。
 * 查看变量:p <变量>。watch也有,不过不常用(太多信息了会弄花眼……)
 * 下一步是n(next的缩写)。这个下一步不会自动进入子程序,结合断点使用。
 * 继续运行程序是c(continue的缩写)。
 * 退出gdb是q(quit的缩写)。

还有一些小技巧:
 * 不输入命令直接回车可以执行上一次执行的命令,对大量n的时候比较有效。
 * gdb支持p gao(1, 2)的用法,可以查看返回值,也支持p 2*2之类的用法,反正p非常灵活(废话)。

快速学会使用gdb by Dai

  • 编译时使用g++ -g xxx.cpp
  • 进入gdb:gdb a.out
  • 如果看RTE,直接输入r(run的缩写)就可以了。如果输入在文件里,输入r < a.in(Win下未必适用)
  • 如果要下断点,在r之前输入b <行号>。例如150行想停下来,键入b 150,然后再r。
  • 有时候RTE gdb没法正常捕捉,需要结合断点使用。
  • 查看变量:p <变量>。watch也有,不过不常用(太多信息了会弄花眼……)
  • 下一步是n(next的缩写)。这个下一步不会自动进入子程序,结合断点使用。
  • 继续运行程序是c(continue的缩写)。
  • 退出gdb是q(quit的缩写)。

还有一些小技巧:

  • 不输入命令直接回车可以执行上一次执行的命令,对大量n的时候比较有效。
  • gdb支持p gao(1, 2)的用法,可以查看返回值,也支持p 2*2之类的用法,反正p非常灵活(废话)。