gdb调试

1. 前提条件

  • 如果需要gdb调试,在编译时必须加上-g参数
gcc -g hello.c -o hello
  • 启动gdb: gdb program
  • 启动后类似进入一个shell终端窗口

2. 启动gdb

  • 启动gdb:gdb ./app
  • 设置运行参数:set args hello world I am here
  • 查看运行参数:show args
  • 启动程序:run
  • 程序向下执行一行:start

3. 显示源代码

  • list 10:打印第十行代码的上下文内容
  • list main:打印函数名为main的函数的原程序
  • list:显示当前行后面的原程序
  • list -:显示当前文件开始处的源程序
  • list fun1.c:10:显示fun1.c文件下第10行
  • list fun1.c:fun1:显示fun1.c文件下的函数fun1的源程序
  • set listsize 20:设置一次显示源代码的默认行数
  • show listsize:查看当前listsize的设置

4. 设置断点(block)

  • b 10:源程序第十行设置断点
  • b main:源程序main函数处设置断点
  • b fun1.c:10:在源文件fun1.c的第十行处停住
  • b fun1.c:fun1:在源文件fun1.c的fun1函数处停住
  • info b:查看所有的断点
  • b test.c:8 if intValue=5:条件断点
  • d 1:删除(delete)断点号为1 的断点
  • d 1 2 4:删除断点号为1,2,4的断点
  • d 3-6:删除范围内的断点
  • d:删除所有断点
  • disable:使所有断点无效(简写为dis)
  • disable 1:使断点号为1的断点无效
  • disable 1 2:使多个断点无效
  • disable 3-6:范围断点无效
  • enable:使所有无效断点生效(简写为ena)
  • enable 1:使断点号为1的断点生效
  • enable 2 3:使多个无效断点生效
  • enable 4-6:使范围内无效断点生效

5 调试代码

  • run:运行到第一个断点,可以简写为r
  • next:单步跟踪,不进入方法体(n)
  • step:单步跟踪,进入方法体(s)
  • finish:退出进入的函数
  • until:在一个循环体内单步追踪,知道运行到退出循环体(u)
  • continue:跳到下一个断点
  • print count:打印count的值,可以简写为p

6 自动显示变量的值

  • display count:单步追踪时自动显示count变量
  • info display:查看display设置的自动显示的信息
  • undisplay 1:使编号为1的自动显示变量不自动显示
  • delete display 1:删除编号为1的自动显示变量
  • delete display 1-3:你猜是啥意思
  • disable display 1
  • disable display 1 2 4
  • enable display 1 2
  • ptype width:查看变量width的类型
  • set var width=47:将程序中变量width的值改为47
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值