Linux 高并发学习笔记 - GDB 基本使用

1.5 GDB 基本使用

Linux 高并发学习笔记 - 笔记索引

1.5.1 介绍

GDBGNU提供的调试工具,是最原始的调试工具。

本章节将简单介绍GDB的使用,满足基本需求。

关于更多内容:

(gdb) help  // 查看帮助
1.5.2 生成可调试文件
$ gcc main.c add.c sub.c mul.c div.c -o main -g -Wall  // 必须开启 -g, 建议开启 -Wall
  • -g将建立可调试文件,在可执行文件中嵌入源代码机器码映射关系。
  • 调试建立发生在编译环节,即预处理代码 → \to 汇编代码环节,也可以对汇编代码建立调试,将嵌入汇编代码机器码映射关系(即后续调试将是对汇编代码的调试)。可以对不同文件选择性建立调试,再连接成完整文件。
  • -g建立的可调试文件体积通常大于一般可执行文件。
  • 可调试文件与源文件建立了映射关系,调试时需确保源文件在原始位置(绝对路径),未删改。
1.5.3 常用命令
启动与结束
$ gdb <file>  // 启动 GDB
$ gdb <file> -d <director>  // 启动 GDB 并将 director 列入搜索目录
$ gdb <file> -x <config_file>  // 启动 GDB 并首先执行 config_file 中命令
(gdb) quit  // 或 q  // 退出 GDB
显示代码
  • 显示代码命令为list,可以用缩写l代替。
  • 显示代码与当前定位相关(如下文第1~3条),首次定位在main程序第1行。
(gdb) list  // 显示代码, 从上次定位继续

(gdb) list <line>  // 显示当前文件第 line 行代码上下文
(gdb) list <function>  // 显示当前文件 function 函数上下文, 当前文件不存在, 前往其他文件查找
(gdb) list <st>,<ed>  // 显示当前文件第 st 至 ed 行代码

(gdb) list <file>:<line>  // 显示 file 文件第 line 行代码上下文
(gdb) list <file>:<function>  // 显示 file 文件 function 函数上下文
(gdb) list <file>:<st>,<ed>  // 显示 file 文件第 st 至 ed 行代码

(gdb) set listsize <size>  // 设置一次显示代码行数, 初始 10
(gdb) show listsize  // 显示一次显示代码行数
设置断点与监视
  • 相关缩写:break - binfo - idelete - del - denable - endisable - dis
(gdb) break [<file>:](<line>|<function>)  // 设置断点
(gdb) break <line> if <expression>  // 设置条件断点
(gdb) info break  // 显示断点属性列表

(gdb) watch <expression>  // 设置监视
(gdb) info watch  // 显示监视属性列表

(gdb) delete <number>  // 删除断点/监视, number 为 info ... 显示的序号
(gdb) disable <number>  // 停用断点/监视
(gdb) enable <number>  // 启用断点/监视
开始调试
  • 相关缩写:run - rprint - pcontinue - cnext - nstep - sfinish - fin
(gdb) start  // 启动程序, 无视断点
(gdb) run  // 启动程序, 断点停留
(gdb) print <expression>  // 打印值
(gdb) continue  // 运行至下一断点
(gdb) next  // 运行至下一行, 不进函数
(gdb) step  // 运行至下一行, 进入函数
(gdb) finish  // 跳出函数, 并立即停留
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值