最简单的gdb调试步骤

1. 使用gcc -g 参数编译生成可调试的程序app

gcc main.c -o app -g

2. 启动gdb调试程序

gdb app

  如果需要给程序传递参数的话,在gdb启动后使用set args传参:

set args xxx xxx xxx

   启动调试:

run  #或缩写:r

3. gdb启动后查看代码的命令:list(缩写:l)

l             #默认显示10行代码
l 25   #查看第25行附近的代码
l main.c #查看main.c的代码
l math.c:add #查看math.c文件中 add函数的代码
l math.c:30   #查看math.c文件中 第30行附件的代码
  • show listsize       #查看list命令一次显示的行数
  • set listsize 20   #设置list命令一次显示20行

4. 设置断点的命令:break(缩写:b)

b  12    #在第12行添加断点
b 行号    
b 函数名  
b 文件名:行号
b 文件名:函数名

5. 查看断点信息的命令:info(缩写:i)

i b

     

6. 删除断点的命令:del(缩写:d)

d 2      #删除Num为 2 的断点
d 3 8 #删除Num为3和8的断点
d 4-7    #删除Num(从4到7)的断点

7. 设置断点无效的命令:dis

dis 8      #停用Num为8的断点

    

 8.启用断点的命令:ena

ena  8    #启用Num为8的断点

   

9.设置条件断点: 

b 17 if i==10         #循环体中i的值为10时,断点生效

    

10. 启动程序开始调试的命令:run(缩写:r)

11.程序遇断点后,继续运行程序的命令:continue(缩写:c)

12.打印变量值的命令:print(缩写:p) 

     

13.查看变量类型的命令:ptype

     

14.逐步调试命令:next(缩写:n)

15.显示变量值的命令:display 

display  变量

     

16.查看当前显示变量的列表:

i display

     

17.取消变量值的显示命令:undisplay

undisplay  Num

18.进入函数内部的命令:step(缩写:s)

     

19.跳出函数体的命令:finish

  注意:函数体内部如果有循环断点的话, 无法达到跳出函数体的效果。

20.设置变量值的命令:set var

set var x=10    #设置变量x的值为10

21.跳出for循环的命令:until

  注意:for循环中如果还有断点的话,是达不到跳出for循环效果的。

22.退出调试的命令:quit(缩写:q)

原文地址:https://www.cnblogs.com/ziwuxian/p/13046568.html