美文网首页
GDB常用命令

GDB常用命令

作者: GTMYang | 来源:发表于2025-06-27 13:24 被阅读0次

GDB (GNU Debugger) 是 Linux 下常用的调试工具,用于调试 C/C++ 等程序。以下是常用的 GDB 命令分类整理:


1. 启动和退出

  • 启动 GDB

    gdb <可执行程序>          # 直接启动
    gdb --args <程序> <参数>  # 带参数启动
    gdb -p <PID>             # 附加到正在运行的进程
    
  • 退出 GDB

    q 或 quit                # 退出 GDB
    

2. 运行程序

  • 运行程序

    r 或 run                 # 从头运行程序
    r <参数>                 # 带参数运行(需在启动时未指定参数)
    
  • 停止程序

    Ctrl + C                 # 中断程序(暂停在当前位置)
    kill                     # 终止程序但不退出 GDB
    

3. 断点管理

  • 设置断点

    b 或 break <函数名>       # 在函数入口设断点
    b <文件名:行号>          # 在指定文件的某行设断点
    b *<内存地址>            # 在内存地址处设断点(用于汇编调试)
    b <行号>                # 在当前文件的某行设断点
    
  • 条件断点

    b <位置> if <条件>       # 当条件为真时触发断点(如 `b main.c:10 if x==5`)
    
  • 查看/删除断点

    info b 或 info break     # 查看所有断点
    delete <断点编号>        # 删除指定断点
    delete                  # 删除所有断点
    disable/enable <编号>    # 禁用/启用断点
    

4. 单步执行

  • 逐行执行

    s 或 step               # 单步进入(会进入函数内部)
    n 或 next               # 单步跳过(不进入函数)
    
  • 继续执行

    c 或 continue           # 继续运行直到下一个断点
    
  • 逐指令执行(汇编级)

    si 或 stepi            # 单步进入一条机器指令
    ni 或 nexti            # 单步跳过一条机器指令
    

5. 查看代码和变量

  • 查看代码

    l 或 list              # 显示当前行附近的代码
    l <函数名>             # 显示指定函数的代码
    l <文件名:行号>        # 显示指定位置的代码
    
  • 查看变量

    p 或 print <变量名>    # 打印变量值
    p/x <变量>             # 以十六进制打印
    p/d <变量>             # 以十进制打印
    p/t <变量>             # 以二进制打印
    p <表达式>             # 打印表达式结果(如 `p x+y`)
    
  • 自动显示变量

    display <变量>         # 每次暂停时自动打印变量
    undisplay <编号>       # 取消自动显示
    info display           # 查看所有自动显示的变量
    

6. 调用栈和帧

  • 查看调用栈

    bt 或 backtrace        # 显示当前调用栈(函数调用链)
    bt full                # 显示调用栈及局部变量
    
  • 切换栈帧

    frame <编号>           # 切换到指定栈帧(如 `frame 2`)
    up/down                # 向上/向下切换栈帧
    info frame             # 查看当前帧的详细信息
    

7. 内存和寄存器

  • 查看内存

    x/<格式> <地址>        # 检查内存(如 `x/4xw 0xffff0000`)
                           # 格式:`n`=数量, `f`=格式(x/d/u/t等), `s`=大小(b/h/w/g)
    
  • 查看寄存器

    info registers         # 查看所有寄存器值
    p $<寄存器名>          # 打印特定寄存器(如 `p $eax`)
    

8. 线程调试

  • 多线程操作
    info threads           # 查看所有线程
    thread <线程ID>        # 切换到指定线程
    thread apply all <命令> # 对所有线程执行命令(如 `thread apply all bt`)
    

9. 其他实用命令

  • 设置观察点(监控变量修改)

    watch <变量>           # 当变量被写入时中断
    rwatch <变量>          # 当变量被读取时中断
    
  • 修改变量值

    set var <变量>=<值>    # 修改变量值(如 `set var x=10`)
    
  • 反汇编

    disassemble            # 反汇编当前函数
    disas <函数名>         # 反汇编指定函数
    # 设置反汇编风格
    set disassembly-flavor intel  # 或 att
    # 设置反汇编下一行指令
    set disassemble-next-line on
    
  • GDB 配置

    set logging on         # 将输出记录到文件(默认 gdb.txt)
    show args             # 查看程序启动参数
    

10. 调试崩溃程序(Core Dump)

gdb <可执行程序> <core文件>  # 分析 core 文件
bt                          # 查看崩溃时的调用栈

常用组合示例

  1. 启动并调试

    gdb ./my_program
    b main            # 在 main 函数设断点
    r                 # 运行
    
  2. 调试崩溃

    gdb ./my_program core
    bt                # 查看崩溃位置
    
  3. 修改变量继续执行

    b 20             # 在行号 20 设断点
    r                # 运行
    p x              # 查看变量 x
    set var x=42     # 修改 x 的值
    c                # 继续执行
    

掌握这些命令后,可以覆盖大部分调试场景。更复杂的用法可通过 help <命令> 查看 GDB 内置文档。

相关文章

  • gdb调试基本方法

    gdb调试基本方法 gdb调试常用命令 在GDB中运行程序 断点(BreakPoint) 观察点(WatchPoi...

  • GDB学习笔记

    本文介绍使用gdb调试程序的常用命令。 简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果...

  • GDB常用命令

    调用gdb编译需要在g++后面加 -g参数再加-o; [root@redhat home]#gdb 调试文件:启动...

  • gdb常用命令

    1gdb编译方法: 2进入gdb调试 3l(list)查看文件,每次输入l显示10行 4设置断点,设置方法:b 7...

  • GDB常用命令

    1、file载入调试程序,同时加载符号表 2、core-file载入core dump程序映像,gdb命令行参数形...

  • GDB常用命令

    程序编译时必须加 “-g” 选项,例如,编译 main.c 生成 a.out 程序。 开始调试。 在 main.c...

  • GDB 常用命令

    官方文档 http://sourceware.org/gdb/current/onlinedocs/gdb/ 确定...

  • gdb ---- x命令详解

    examine命令缩写为x格式: 其他常用命令:编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g m...

  • GDB常用命令记录

    1. 编译时允许gdb: 在编译命令中加入-g gcc/g++ filename.c/cpp -Wall -o a...

  • GDB-常用命令

    非常好的参考资料,记录以备查看:GDB调试命令总结 执行命令run test -a 1 -b 2 -c 3 设置条...

网友评论

      本文标题:GDB常用命令

      本文链接:https://www.haomeiwen.com/subject/kdbpgjtx.html