GDB学习笔记

gdb

GDB是一个强大的linux下的程序调试工具
其使用过程如下:

debug方式编译

在编译前加上 -g

gcc test.c -g -o test

通过gdb启动程序

gdb test

为代码添加断点

在gdb 命令模式下 (gdb):

  • list [n] 可以显示从n到n+10行的代码 ->l

  • break [n] 给第n行添加一个断点 ->b

  • break [func name] 给函数func入口设置断点

  • break if 设置条件断点

  • delete [i] 删除第i个断点

  • info break 显示断点信息

      (gdb) b 8
      Breakpoint 1 at 0x40053d: file test.c, line 8.
      (gdb) b func
      Breakpoint 2 at 0x40052d: file test.c, line 5.
      (gdb) b 20
      Breakpoint 3 at 0x40056c: file test.c, line 20.
      (gdb) info break
      Num     Type           Disp Enb Address            What
      1       breakpoint     keep y   0x000000000040053d in func at test.c:8
      2       breakpoint     keep y   0x000000000040052d in func at test.c:5
      3       breakpoint     keep y   0x000000000040056c in main at test.c:20
    
  • run 运行程序 -> r

  • watch 观察点

      Hardware watchpoint 4: i>50
    
      Old value = 0
      New value = 1
      0x0000000000400547 in func (n=250) at test.c:6
    

在运行过程中:

  • next 单步运行 ->n

  • step 单步进行 ->s

  • print [x] 打印变量x的值 ->p

      (gdb) p i
      $25 = 51
    
  • backtrace 查看调用的函数堆栈 ->bt

      (gdb) bt
      #0  0x0000000000400547 in func (n=250) at test.c:6
      #1  0x000000000040059a in main () at test.c:24
    

你可能感兴趣的:(GDB学习笔记)