2.1 如何停止程序?

  • 使用 ctrl + c , 从外部停止
  • 程序会在打了断点的地方停下来。

一旦 debung 程序停止运行,可以使用 where 来查看当前对应的代码。

2.2 如何继续执行?

使用 continue 继续执行。

2.3 如何查看程序停在哪里?

使用 list

2.4 如何逐行调试?

首先得发送外界信号(ctrl+c)或者靠断点使程序停止运行。
然后使用next或step命令进行调试。

next 与 step 的区别

在有函数的调用的地方,next 会调用完成这个函数然后执行下一步,step 会进入到该函数的内部。

2.5 如何检查变量?-print

使用 print

  1. (gdb) print x
  2. $1 = 900
  3. (gdb) print s
  4. $3 = 0x8048470 "Hello World!\n"
  5. (gdb)

The output from the print command is always formatted $## = (value). The $## is simply a counter that keeps track of the variables you have examined.

2.6 如何修改变量-set

  1. (gdb) set x = 3
  2. (gdb) print x
  3. $4 = 3

新版本可能需要使用 set var

  1. set var x = 3

2.7 调用函数

  1. call abort()

2.8 退出函数

当查看函数看够了, 想退出当前的函数时,使用 finish

  1. (gdb) finish
  2. Run till exit from #0 fun1 () at test.c:5
  3. main (argc=1, argv=0xbffffaf4) at test.c:17
  4. 17 return 0;
  5. Value returned is $1 = 1