眾所周知,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【捂臉】