今天才学会的DevC++调试器查看连续内存STL容器内值的方法(DevC++)
众所周知,DevC++是一个bug层出不穷的过时的IDE
但因为编译single source方便,简单易上手,还有一些OIer(包括蒟蒻)仍在使用它
如何避免在调试的时候一碰到或者查看C++的一些东西(比如STL容器,cout)就卡住,在OI在役的时候就一直困扰着我
没想到退役这么久后突然发现有一部分有解决方案了
这个方法本来是解决调试器不把指针认为是数组的问题的
像上面这个例子,a是一个数组,p是一个指向数组的指针,调试器看a能看到整个数组,看p却只能看到这个地址的16进制值
我们添加查看*p@5
,这个神奇的@
表示从内存里p指的位置开始连续读5个相同类型的值,就解决了上面提到的问题
于是我们也可以解决查看vector
的问题了
添加查看a
:不行,一是会卡住,二是看到的是一个结构体,有指向内存的指针,但看不到数
添加查看a[0]
:能看,不会卡住
添加查看&a[0]
*&a[0]
:能看,得到了连续内存的起始地址,相当于得到了一个指向数组的指针
添加查看*&a[0]@5
:我们看到了整个数组
这种方法适用于使用连续内存的STL容器,比如vector
queue
string
诸如list
map
的话还是只好老老实实printf了
ref:https://blog.csdn.net/qq_35818307/article/details/104965670
update:这是gdb自带的功能,并不是什么feature【捂脸】
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析