gdb调试技巧总结

参数说明

参数 说明
–batch 以执行命令模式运行,处理完相关命令后直接退出。不进行任何交互
–batch-silent 与–batch一样,但抑制所有 gdb stsdout 输出。
–quiet
-q
启动时不打印版本号信息
–eval-command=COMMAND
-ex
执行单个 GDB 命令。
可以多次使用,且可以与 –command 结合使用。
–command=FILE
-x FILE
从 FILE 执行 GDB 命令。
–directory=DIR 在 DIR 中搜索源文件。
–pid=PID
-p PID
附加到正在运行的进程 PID。

命令说明

命令 说明
set pagination off
set height 0
gdb就全部输出,无翻页选项
thread apply all 将命令应用于所有线程, 后跟要执行的命令,如 bt full

实用技巧

  • 打印运行进程的所有线程的堆栈信息

    1
    2
    # 输出进程号为1234的进程的所有线程堆栈信息
    gdb -q --batch --ex "set height 0" -ex "thread apply all bt full" -p 1234
  • 直接数据core文件中的所有线程的堆栈信息

    1
    2
    # 输出二进制文件路径为proc_file,且core文件为xxx.core 的所有线程堆栈信息
    gdb -q --batch --ex "set height 0" -ex "thread apply all bt full" proc_file xxx.core
  • 加载源码目录

    1
    2
    3
    4
    5
    6
    1. 打开 gdb 并加载二进制文件和核心转储文件:
    gdb <binary_file> <core_file>
    2. 在 gdb 的交互命令行下,使用 directory 命令来指定源码目录
    (gdb) directory /path/to/source_code
    或以逗号分隔指定一个或多个源码目录
    (gdb) directory /path/to/source_code1, /path/to/source_code2

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!