GDB 调试介绍

1. 什么是GDB

GDB 是由 GNU 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境,GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。

GDB的四个主要功能:

  • 启动程序,可以按照自定义的要求运行程序
  • 被调试的程序在所指定的断点处停住(断点可以是条件表达式
  • 当程序被停住时,可以检查此时程序中所发生的事
  • 改变程序,将一个 BUG 产生的影响修正从而测试其他 BUG

2. 准备工作

  • 生成可执行文件

    # '-O0':编译器优化设为0
    # '-g': 可执行文件加入源码信息
    # '-Wall': warning all
    gcc -g -O0 -Wall main.c -o main
    
  • 启动调试

    gdb main
    

3. GDB 常用命令

功能命令功能命令
退出quit帮助help
查看主文件代码l/ list 行号
l/ list 函数名
查看其它文件代码l/ list 文件名:行号
l/ list 文件名:函数名
设置/获取参数set args 10 20
show args
显示/设置行数show list/ listsize
set list/ listsize
设置主文件断点b/ break 行号
b/ break函数名
设置其他文件断点b/ break 文件名: 行号
b/ break 文件名: 函数
查看断点i/ info b/ break删除断点d/ del/ delete 断点编号
设置断点无效dis/ disable 断点编号设置断点生效ena/ enable 断点编号
设置条件断点b/ break 10 if i==5执行至下一个断点前c/ continue
运行GDB程序start (停在第一行)
run (遇到断点停)
打印变量[类型]p/ print 变量名
ptype 变量名
向下执行一行n/ next
不进入函数体
向下单步调试s/ step
finish (跳出函数体)
自动变量操作display 变量名
i/ info display
undisplay 编号
其它操作set var 变量名=变量值
until (跳出循环)

4. GDB 多进程调试

使用 GDB 调试的时候,GDB 默认只能跟踪一个进程,可以在 fork 函数调用之前,通过指令设置 GDB 调试工具跟踪父进程或者是跟踪子进程,默认跟踪父进程。

  1. 设置调试父进程或者子进程:set follow-fork-mode [parent| child]

  2. 设置调试模式:set detach-on-fork [on | off]

    默认为 on,表示调试当前进程的时候,其它的进程继续运行,如果为 off,调试当前进程的时候,其它进程被 GDB 挂起。

  3. 查看调试的进程:info inferiors

  4. 切换当前调试的进程:inferior id

  5. 使进程脱离 GDB 调试:detach inferiors id

5. GDB 调试段错误

gcc main.c -g -o main
gdb main
run
backtrack 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值