Linux网络编程之 GDB的调试

📌 GDB 命令 - 调试命令

🚀 从头开始使用 GDB 的流程

  1. 编译代码以便调试
    使用 -g 选项编译源代码,以便生成调试信息:

    gcc -g your_program.c -o your_program
    

    -g 选项用于在编译时包含调试符号,这样可以在 GDB 中查看源代码信息。

  2. 启动 GDB
    使用以下命令启动 GDB 并加载你的程序:

    gdb your_program
    

    这将进入 GDB 调试器,并加载可执行文件 your_program

  3. 设置断点
    在程序中设置一个或多个断点,使程序在执行到某些特定位置时暂停:

    (gdb) break main        # 在 main 函数处设置断点
    (gdb) break 10          # 在第 10 行代码处设置断点
    (gdb) break function_name  # 在指定函数入口处设置断点
    
  4. 运行程序
    使用以下命令运行程序,程序会在遇到断点时暂停:

    (gdb) run
    
  5. 单步调试

    • n / next:执行下一行代码,不会进入函数体。
    • s / step:单步执行代码,遇到函数调用会进入函数内部。
    • finish:执行完当前函数,跳出函数体。
  6. 查看和修改变量

    • p / print 变量名:打印变量的当前值。
    • set var 变量名=新值:修改变量的值。
  7. 查看调用栈
    在程序暂停时,可以使用 backtrace 命令查看调用栈,了解函数调用的顺序:

    (gdb) backtrace
    
  8. 继续运行程序
    使用以下命令继续运行程序,直到遇到下一个断点:

    (gdb) continue
    
  9. 退出 GDB
    当调试结束时,可以使用以下命令退出 GDB:

    (gdb) quit
    

🚀 运行 GDB 程序

  • start:程序停在第一行
  • run:遇到断点才停

▶️ 继续运行,到下一个断点停

  • c / continue

⏭ 向下执行一行代码(不会进入函数体)

  • n / next

🔍 向下单步调试(遇到函数进入函数体)

  • s / step
  • finish:跳出函数体

🛠 变量操作

  • p / print 变量名:打印变量值
  • ptype 变量名:打印变量类型

🔄 自动变量操作

  • display num:自动打印指定变量的值
  • i / info display:查看所有已自动显示的变量
  • undisplay 编号:取消自动显示

⚙️ 其它操作

  • set var 变量名=变量值:修改变量值
  • until:跳出循环

📌 GDB 命令 - 启动、退出、查看代码

🔄 启动和退出

  • gdb 可执行程序:启动 GDB 并加载指定程序
  • quit:退出 GDB

🎛 给程序设置参数/获取设置参数

  • set args 10 20:设置运行参数为 1020
  • show args:显示当前程序的运行参数

📚 GDB 使用帮助

  • help:查看 GDB 使用帮助

📝 查看当前文件代码

  • list / l:从默认位置显示代码
  • list / l 行号:从指定行显示代码
  • list / l 函数名:从指定函数显示代码

🗂 查看非当前文件代码

  • list / l 文件名:行号:显示指定文件的代码
  • list / l 文件名:函数名:显示指定文件的函数代码

🔢 设置显示的行数

  • show list / listsize:显示当前每次 list 命令显示的行数
  • set list / listsize 行数:设置每次 list 命令显示的行数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋到亦天凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值