前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux调试器---gdb的使用

Linux调试器---gdb的使用

作者头像
绝活蛋炒饭
发布2024-12-16 16:19:59
发布2024-12-16 16:19:59
1450
举报
文章被收录于专栏:绝活编程学习

1.debug VS relese

debug模式下形成的可执行程序会给我们添加了调试信息,但是用户并不需要,他们需要更快的下载速度。

relese模式下形成的可执行程序,会去掉调试信息,这样会让release模式下的可执行文件更小。

2.gcc 的默认行为

gcc默认链接时,链接的是动态库 gcc默认编译出来的可执行程序是release模式的,这个模式下的可执行程序是无法调试的,

在使用gcc的时候,添加 -g 选项更改编译出来的可执行文件为denug模式


3.gdb 的基础操作

3.1启动和退出

3.2 显示代码 l+行号

因为gdb会自动记录上一行的代码,所以输入l 1 后,继续按回车键就可以往下走了。


3.3开始跑代码 r 和打断点 b+行号


3.4 b 函数名 b file:行号


3.5 info b 查看打的断点


3.6 d 断点编号 删除断点

3.7 disable/enable 断点编号 使能(开启或关闭断点)断点

这里的 n、y就代表着断点是否被启用


3.8 n 逐过程 ----- F10 s 逐语句 ----- F11


3.9 display 变量名/地址 常显示变量 undisplay 变量名/地址 取消常显示


3.10 c 从一个断点跳到另一个断点


3.11 finish 将一个函数运行结束,就停下来


3.12 until 行号 小范围跳转到指定行 (肯定是程序自动走到指定行)


3.13 set var name = val 在不改变代码的情况下,多分支下修改一下变量的值

这个指令有几点注意的:1.必须代码运行起来。2.要改变的变量必须是被定义了 (就是在修改这个变量的时候,程序必须运行过这个变量定义的那条指令了)。


3.14 bt 查看调用堆栈

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.debug VS relese
  • 2.gcc 的默认行为
  • 3.gdb 的基础操作
    • 3.1启动和退出
    • 3.2 显示代码 l+行号
    • 3.3开始跑代码 r 和打断点 b+行号
    • 3.4 b 函数名 b file:行号
    • 3.5 info b 查看打的断点
    • 3.6 d 断点编号 删除断点
    • 3.7 disable/enable 断点编号 使能(开启或关闭断点)断点
    • 3.8 n 逐过程 ----- F10 s 逐语句 ----- F11
    • 3.9 display 变量名/地址 常显示变量 undisplay 变量名/地址 取消常显示
    • 3.10 c 从一个断点跳到另一个断点
    • 3.11 finish 将一个函数运行结束,就停下来
    • 3.12 until 行号 小范围跳转到指定行 (肯定是程序自动走到指定行)
    • 3.13 set var name = val 在不改变代码的情况下,多分支下修改一下变量的值
    • 3.14 bt 查看调用堆栈
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档