今天才学会的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【捂脸】

posted @   Flash_Hu  阅读(2653)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示
哥伦布
-1°
10:09发布
哥伦布
10:09发布
-1°
西南风
2级
空气质量
相对湿度
87%
今天
小雨
-1°/13°
周六
多云
-3°/10°
周日
-4°/2°