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
61. 打开 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 协议 ,转载请注明出处!