当前位置: 首页 > news >正文

Linux gdb

gdb(GNU Debugger)是一款命令行调试工具,主要用于定位和修复程序中的错误。

它支持设置断点、单步执行代码、查看变量值、检查内存状态等功能,能帮助开发者追踪程序执行流程,找到崩溃、逻辑错误等问题,广泛适用于 C、C++ 等语言的程序调试。 

1.进入 gdb

我们创建写好的c语言文件或者c++文件 要通过gcc\g++ 变成可以执行程序

才能呗gdb调试

gdb是debug模式

但是gcc和g++编译器默认生成的可执行文件是release文件

因此我们在使用gcc 生成可执行文件要加上 -g

这样我们的.out文件才可以被调试

gdb 可执行文件名   --进入gdb

2.l(list)

这个地l和list可以混用是等价的

listl 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
listl 函数名:列出某个函数的源代码。

3.b(break)

break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点

4.i b(info breakpoint)

info break和info breakpoint是完全等价的

info break :查看断点信息

5.d breakpoint(delete breakpoints)

这个地方breakpoint不可以缩写成b

因为这个地方b除了breakpoint 还有可能是bookpoints 

容易产生歧义

delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点

6.dis b(disable breakpoints)

和delet breakpoint一样 如果后面不加列 就是代表禁用所有断点

disable breakpoints:禁用断点

7.en b(enable breakpoints)

enable breakpoints:启用断点
和delet breakpoint一样 如果后面不加列 就是代表禁用所有断点

8.r(run)

run(r):从开始连续而非单步执行程序
run会在第一个断点停下来

9.!clear

!clearh和Linux中的clear功能相同

10.n(next)

n next:单条执行
等同于vis中的F10

11.s(step)

sstep:进入函数调用

等同于vis中的F11

不是函数的时候和n(next)没什么区别

12.finish

finish:执行到当前函数返回,然后挺下来等待命令
对代码做一些小的改动

13.until 

until X行号:跳至X

14.display

display 变量名:跟踪查看一个变量,每次停下来都显示它的值

15.undisplay

undisplay:取消对先前设置的那些变量的跟踪

16.set var

set var:修改变量的值

17.q(quit)

quit:退出gdb

18.p(print)

print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
(1)打印变量或者表达式的值
p x --打印变量的值
p a + b --打印表达式的值

(2)通过表达式修改变量值

p x = 20

(3)调用函数

p add(2, 3)

19.c(continue)

continue(c):从当前位置开始连续而非单步执行程序
程序已处于暂停状态(如命中断点、被信号暂停)时,从当前暂停的位置继续执行,直到遇到下一个断点或程序结束。

20.bt(breaktrace)

breaktrace(bt):查看各级函数调用及参数

#0、#1…:栈帧编号(#0 是当前最内层函数,编号越大越接近程序入口)。

add(a=2,b=3):函数名 + 参数值(显示当前层函数及传入的参数)。

at example.c:6:代码位置(函数所在的文件名和行号)。

21.ifo locals

infoi) locals:查看当前栈帧局部变量的值
http://www.dtcms.com/a/465429.html

相关文章:

  • 源码阅读 LeakCanary
  • Java 网络流式编程
  • java后端工程师进修ing(研一版‖day51)
  • JavaScript Promise 详解:从入门到精通
  • 中山建设银行招聘网站网站设计的评估
  • 深圳制作网站培训机构自己做的网站打开超慢
  • MySQL数据库优化实战提升查询性能的五大核心策略
  • libboost_system-mt-x64.so.1.76.0 和libboost_system-mt-d-x64.so.1.76.0 区别
  • 【11408学习记录】考研数学核心突破:线性代数特征值与特征向量详解+英语长难句精析
  • 深入剖析:基于epoll与主从Reactor模型的高性能服务器设计与实现
  • 非小细胞肺癌与肿瘤相关巨噬细胞:新的治疗策略
  • React Native:发现默认参数children【特殊的prop】
  • Flink进阶:从“会用”到“用明白”的踩坑与实战总结
  • 最专业的礼品网站实例网站优化费用怎么做会计分录
  • 苍穹外卖-工作台实现、Apache POI、导出Excel报表
  • 自定义类型:联合与枚举
  • Java9
  • 基于Spring Boot + Vue 3的乡村振兴综合服务平台
  • Java-145 深入浅出 MongoDB 基本操作详解:数据库查看、切换、创建集合与删除完整教程
  • disable-devtool 网络安全 禁止打开控制台
  • TCP协议的可靠性保障
  • ktv支付订房网站模板商业策划书范文6篇
  • 十一、OpenCV中图形的绘制
  • 用户中心网站设计北京社保网址
  • 安卓13_ROM修改定制化-----如何给安卓手机里安装或者内置数字证书文件 cer类型的证书文件如何转换为可内置文件
  • 仿mudou——Connection模块(连接管理)
  • vue3 + el-upload组件集成阿里云视频点播从本地上传至点播存储
  • 外贸网站是用什么软件做的法制教育网站
  • c/c++字符串比较
  • 国外建站公司上海企业自助建站系统