2011-05-24 60 views
3

我使用的是Dan Marinescu的配置gdb 7.2,它允許打印STL向量字符串等(pstring,pvector等) 它看起來不太好。所以看看下面的答案之一,我清理了一下,並使用了7.0以上的漂亮打印機。在gdb中減少垃圾print

爲了做到這一點,我把我的.gdbinit以下

python 
import sys 
sys.path.insert(0, '/home/me/gdb_printers/python') 
from libstdcxx.v6.printers import register_libstdcxx_printers 
register_libstdcxx_printers (None) 
end 
set print elements 0 

的說明說從SVN到/家庭/ ME/gdb_printers/Python的下載代碼,但是這是前一陣子。我注意到有代碼在gdb 7.3中。所以我刪除了上述和基本的工作,但STL沒有。這是一個包含字符串的對象:

{A = 2,B = 97 '一個',C = 2469135780247,d = 1.1363636363636362,E = { 靜態非營利組織= 18446744073709551615, _M_dataplus = {> = {< __gnu_cxx: :new_allocator> = {},},_M_p = 0x602028 「foo」 的}}}

./gdb-7.3.50.20110526/gdb/data-directory/python/gdb:

爲了與STL工作,我需要下載射箭項目的代碼: svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

並把它放在上面的目錄中,確保所有其他垃圾都沒有了,而且它的效果非常好。

+0

你有試過的代碼片段嗎?您可以使用模板幫助程序進行打印併爲您想要自定義的類型進行特化。 – AJG85 2011-05-24 18:34:20

回答

1

你想要做的是在GDB 7.0及以上版本中使用Python pretty printers

您不需要pstring,常規printjust works(也適用於嵌入的字符串)。

+1

我們有gdb 7.2。命令:info pretty-print不起作用。文檔相當稀少,並沒有提到如何設置它。是否有可能通過加載舊的東西我們的配置搞砸了?我怎樣才能得到一個乾淨的配置,我可以看到這個工作?我應該有一個空的.gdbinit? – Dov 2011-05-28 11:34:49

+0

打印對於STL對象不起作用,也就是說,它打印stl對象的大量垃圾。我在STL的問題中添加了說明 – Dov 2011-06-03 15:39:50