gdb使用入门

GDB调试教程:1小时玩转Linux gdb命令

sudo dnf debuginfo-install glibc-2.32-2.fc33.x86_64

编译时, gcc -g test.c -o test,因为在调试二进制文件的时候,我们需要在二进制文件中加入调试信息,而调试信息是怎么添加的呢?它是在编译的时候,通过-g选项添加的,即类似于gcc -g test.c -o test这样的命令。缺少-g参数会出现出错信息【No symbol table is loaded. Use the "file" command.】,添加之后执行文件稍微变大。

开始调试时,gdb test --silent;再次运行或提示【】, 换别的执行文件需要命令 file test

GDB常见的调试指令

gcc -g [option] [file]
gdb 可执行文件

设置断点和恢复命令

1.常见命令

  • l(list):查看载入的文件代码,如:l 10l main

  • b(break):设置断点,如:b 10b main

  • info b:查看断点信息;

  • r(run):从main运行,到断点处暂停;

  • v 行号:从该行号开始运行;

  • p(print) n:查看n值;

  • n(next):单步下行;

  • s(step):单步进入;

  • c(continue):恢复程序的运行,执行下面程序;

2.高级命令

  • disable 点;

  • enable 点;

  • delete 点info编号;

  • tbreak 临时断点(一次);

  • condition 点 <条件>;

  • ignore 点

查看源代码相关命令

  • list(l) <行号>/<函数名>;

  • file [文件名] 加载文件;

  • forword-search 正则表达式;

  • reverse-search 正则表达式;

  • show directories 源文件路径;

  • disassemble 函数名:反汇编;

  • info line 显示加载内存gdb码;

设置工作环境相关命令

  • set args 参数 //main(args)

  • show args

  • path dir 设定程序运行路径

  • show paths 查看程序运行路径

  • set envirnment var[=value] 环境变量

  • show envirnment var/PATH

  • cd dir

  • pwd

  • shell commend

查看运行数据相关命令

  • print(p) 表达式、变量

  • x /<n/f/u> <addr> 查看内存变量内容

    • n:表示显示内存长度(整数)

    • f:表示显示格式

      • d:十进制

      • x:十六进制

      • o:八进制

      • t:二进制

    • u: 表示显示字节数

    • <addr>:变量内存地址

  • display 表达式

    • display /i $pc 显示c和汇编同步

    • x /i $pc 程序计数器

gdb core 使用(找段错误)

  1. 打开core dump

    1. ulimit -c 默认大小为0

    2. ulimit -c size(k)

  2. gcc -g 源 -o 目文件

  3. 运行有问题产生的core文件

  4. gdb 可执行文件 core文件

2, Debuginfod : 在线调试信息服务器

Debuginfod

posted @   安然春夏  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示