减少gdb打印中的垃圾
reducing junk in gdb print
我使用的gdb 7.2带有Dan Marinescu的配置,允许打印STL矢量字符串等(pstring、pvector等)看起来不太好。因此,看看下面的一个答案,我清理并使用了7.0及更好版本的漂亮打印机。
为了做到这一点,我在.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中的代码下载到/home/me/gdb_prinkers/python中,但那是很久以前的事了。我注意到gdb7.3中有代码is。所以我删除了上面和基础工作,但stl没有。这是一个包含字符串的对象:
{a=2,b=97'a',c=2469135780247,d=1.1363636363636362,e={静态npos=18446744073709551615,_M_dataplus={>={<__gnu_cxx::new_alloctor>={},},_M_p=0x602028"foo"}}}
/gdb-7.3.50.20110526/gdb/data-directory/python/gdb:
为了使用STL,我需要下载archer项目的代码:svn-cosvn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
并将其放在上面的目录中,确保所有其他垃圾都消失了,而且效果很好。
您想要做的是在GDB 7.0及更高版本中使用Python漂亮的打印机来解决。
您不需要pstring
,常规的print
只适用于(嵌入字符串)。
相关文章:
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数
- 如何打印源文件中与 GDB 中的程序流关联的所有行号
- 尝试打印字符串时"Python Exception <class 'gdb.error'> There is no member named _M_dataplus."
- 如何在GDB中按行打印2D数组
- 我如何在GDB中打印十六进制的双重位
- GDB 打印内容:const set<Int4> & var_name
- GDB 在程序运行时打印文件名行号
- gdb ptype 打印整数后缀以指示它是有符号的、无符号的、无符号的长整型等
- GDB打印具有虚拟函数类的非弦乐值的静态常量阵列的无效地址
- GDB打印std ::地图元素
- 在GDB中打印int ** x
- GDB 打印结构的字段
- gdb:打印sockaddr指针值
- 有没有办法让 GDB 打印一些东西来告诉我一行已经执行,而不会停止
- GDB 打印错误的值
- 是否有一种方法可以查看哪个线程正在使用gdb打印标准输出或标准错误?
- 在调试c++程序期间调用round()函数时,GDB打印任意值
- 用GDB打印c++类对象
- 使用GDB打印C++vtables
- 减少gdb打印中的垃圾