2010-09-20 41 views
3

正如我所看到的,使用NetBeans不可能找出STL地圖中的內容。如何在NetBeans C++中預覽STL容器中的變量(例如std :: map)?

是否有任何插件/技巧/解決方案可以讓我在調試模式下打印出地圖中的所有值?

據我所知,它使用GDB來調試C++應用程序。我爲STL容器找到了一些很好的GDB宏(這裏是:http://sourceware.org/ml/gdb/2008-02/msg00064.html)。是否有可能從NetBeans內部執行它們?

回答

1

嘗試將它們放入源文件所在的目錄(或您的主目錄)中的.gdbinit文件中,並查看GDB是否將其選中。

+1

是的,但問題是:如何在NetBeans中使用它們? – ssobczak 2010-09-21 07:10:51

0

stl-views.gdb很舊。 GDB 7.x有一個很多更好mechanism檢查STL容器。

+0

我可以用NetBeans以某種方式連接它嗎? – ssobczak 2010-09-21 07:56:14

2

NetBeans在內部使用gdb,因此將gdb更新爲漂亮打印的標準庫容器,因此使得NetBeans顯示出合理的值。

按照對GDB維基的說明安裝Python查看STL容器漂亮的打印機:http://sourceware.org/gdb/wiki/STLSupport

(檢查以確保路徑是正確輸入內部.gdbinit;嘗試在Python輸入命令,以確保其所有作品)

但是,這漂亮的印刷只適用於g ++ 4.7(及以上)。檢查以確保編譯器的版本已經足夠:

g++ --version 

要安裝最新版本(Linux Mint的13,從here):

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update 
sudo apt-get install g++-4.7 c++-4.7 

更新gccg++指向新的4.7版本(從here):

sudo su 
rm /usr/bin/g++ 
rm /usr/bin/gcc 
ln -s /usr/bin/g++-4.7 /usr/bin/g++ 
ln -s /usr/bin/gcc-4.7 /usr/bin/gcc