GDB · 夏训 · 查看变量

格蠹信息科技有限公司

GDB · 夏训 · 查看变量

www.nanocode.com

盛格塾 2024 暑期公益课程

GDB暑假训练营

2024年8月1日,继 GDB 暑假训练营的埋伏断点探索之旅后,我们再次相聚于屏幕前,开启了 GDB 功能探索的新篇章——查看变量。在编程这片星空中,变量如同星辰般点缀其间,它们承载着程序的灵魂与动态,我们通过洞察这些变量来探寻这片星空的奥秘。

随着直播的序幕缓缓拉开,我满怀激情地踏入了这次查看变量的旅程。此次直播还加入了一些关于 GDB 的简单介绍,通过这次实战,旨在让每一位观众都能亲手揭开变量神秘的面纱。

直播开始,我首先简要回顾了 GDB 的基本操作,以及上一期的埋伏断点的相关知识,为即将展开的变量查看之旅铺垫基础。随后,我直奔主题,开始展示我实际操作的代码。每一次敲击键盘输入的命令,就像是向它发出了一道道探索指令。只见它不急不躁,紧紧跟随我的步伐,带领我深入程序的迷宫,一一揭开那些隐藏的变量的秘密。

“在 GDB 中,查看变量值的基本命令是 print 或简写为 p。” 我边操作边解说,“只需在 GDB 命令行中输入 p 变量名,GDB 便会显示该变量当前的值。” 随着我的演示,屏幕上变量值的一一呈现,让每个人都感受到了 GDB 查看变量这个功能的强大与便捷。

b4d92eb221a14f1edc636832f384f2ce.png

然而,GDB 的魅力远不止于此。我进一步介绍了如何查看复杂数据结构(如数组、结构体等)中的变量值。通过 print 命令结合数组索引或结构体成员访问符,我们能够轻松获取到这些复杂数据结构内部变量的详细信息。这一过程中,我也不断尝试引导观众自己动手尝试,让他们在实践中加深对变量查看的理解与掌握。

随着直播的深入,我还分享了几个实用的 GDB 技巧,如使用 display 命令自动显示变量值,也请张老师给我解释了一下 print 和 display 两个命令的区别。这些互动过程,也让调试过程变得生动有趣。

当直播接近尾声时,我也引入了下一节课的主题查看内存。这次直播的热情反馈让我深感欣慰与鼓舞。这次 GDB 变量查看直播不仅让我又掌握到了 GDB 查看变量的新功能,也在和张老师的互动中查缺补漏。

回望这段充满收获与喜悦的直播历程,我坚信:在编程的道路上,只有不断学习、勇于探索才能不断前行。未来,我将继续带领大家深入探索 GDB 的更多功能与应用场景,共同书写属于我们的编程传奇。同时,我也诚挚地邀请每一位热爱编程、渴望在 GDB 世界中遨游的你加入我们的行列。让我们携手并进、共同成长,在编程的海洋中乘风破浪、勇往直前!

知识点归纳

序号

 命令

 描述

01

p(print)

打印变量

02

display

控制 GDB 当前显示面板

03

n(next)

单步执行

04

pt(ptype)

查看变量的类型

05

p intArray[1]@3

查看数组1-3的值

06

p person

查看结构体的变量

07

info locals

查看当前作用域所有局部变量的值

08

display $pc

显示当前程序计数器的值

09

set var char=’B’

修改变量值为’B’

10

info display

观察当前 GDB 显示面板的内容

11

x /4xw &var

查看内存内容

STEP

01

3dea094c00c8bd3e29350e7009cfdd64.png

1. 前情回顾

STEP

02

39644f6512de87f30f88029336323bc6.png

2. 查看变量

STEP

03

7cee1d56535ad31d8d2527571f42f64f.png

3. 查看变量类型

STEP

04

3f09252b860acadaef40c90eb2d2c5b1.png

4. 查看数组类型变量

STEP

05

99176a107b52aed2df34846d00817a06.png

5. 查看结构体类型变量

STEP

06

3d4358d4afcbc884dae57f6070bfa86a.png

6. 查看当前作用域所有局部变量的值

STEP

07

582aab0f01ed3a9178925aed1d936d6b.png

7. 查看指针类型变量

STEP

08

22d1635897661d8ae0694c244488f01e.png

8. 把变量放进显示面板

STEP

09

8a8ad98a443fecb66c43f0d74f1b0492.png

9. 显示当前程序计数器的值

STEP

10

d3498e1234b1922dd8cd3ad95100a197.png

10. 修改变量的值

STEP

11

718bb57b5e17a187187df7ebc646f59d.png

11. 修改不同类型的变量

STEP

12

be46eeef484472dac690a697d22fd241.png

12. 显示当前线程的函数调用堆栈信息

STEP

13

09c703ee70be72e6905658e389ecfb58.png

13. 用于打印出之前使用display命令的列表

STEP

14

4678b841a069659ad84a23cd101b90c0.png

14. 查看内存

【盛格塾】

正心诚意,格物致知

人文情怀审视软件,以软件技术改变人生

8a1ad5ab9b16e3a359b5d5c96a882711.png

格友公众号

92664282d060c07a74be1ab082216d2b.png

盛格塾小程序

扫描上方二维码或在微信中搜索“盛格塾”小程序

可以阅读更多文章和有声读物

往期推荐

是谁惹恼命令行?

在GDB下学习BOX64

在幽兰之境,邂逅LibreOffice的无限魅力

719蓝屏的主动背锅者原来是他

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
### 如何在 GDB查看变量内容 #### 基本方法 在 GDB 中,`print` 是最常用的命令之一,用于查看变量。通过 `print` 命令可以直接获取指定变量的内容[^2]。 ```bash (gdb) print <变量名> ``` 例如,如果需要查看名为 `localVar` 的局部变量: ```bash (gdb) print localVar ``` 对于复杂的数据结构(如数组或结构体),可以通过点号访问其成员或者索引操作符访问特定位置的元素[^2]: ```bash (gdb) print myStruct.member (gdb) print myArray[3] ``` #### 显示所有局部变量 为了快速查看当前作用域内的所有局部变量及其,可以使用 `info locals` 命令[^2]: ```bash (gdb) info locals ``` 此命令会列出当前函数中所有的局部变量并展示它们的。 #### 查看函数参数 若需查看当前调用栈帧中的函数参数,则可使用 `info args` 命令[^2]: ```bash (gdb) info args ``` 这将提供关于当前正在执行的函数的所有输入参数的信息。 #### 定义数据输出格式 有时,默认的十进制表示可能不够直观;此时可通过设置不同的显示格式来满足需求。比如要以十六进制形式观察某个整数时,可以在前面加上 `/x` 参数[^1]: ```bash (gdb) print/x variableName ``` 同样地,还有其他一些选项可用于改变呈现方式——二进制(`/t`)、字符(`/c`)等等。 #### 自动监视变量变化 当希望每当程序暂停下来都能看到某几个特别关注项的新状态而无需重复键入相同指令的时候,“display”功能便显得尤为重要了: ```bash (gdb) display <变量名> ``` 一旦设置了这样的监控器,在后续每一次停止都会自动重新评估这些表达式的最新情况并向用户报告出来。 #### 获取变量类型及大小信息 除了简单的读取之外,有时候还需要确切知道对象的确切布局细节。“ptype”不仅能够告诉我们它的类别定义还能附带偏移量等额外元数据以便更好地理解内部构成[^4]: ```bash (gdb) ptype /o hb_module_t ``` 以上就是几种常见的利用GDB工具探索C/C++应用程序运行期间动态行为的技术手段介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值