今天才學會的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【捂臉】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM