[英]gdb how to print vector<bool> value
我只是在调试c ++程序而且我有价值
vector<bool> B(n, 0);
我的问题是如何在gdb控制台中打印它的值? 因为eclipse IDE不太聪明,不能以redable格式呈现它。
当我有整数向量时,我可以做类似的事情:
printf "%x %x %x", B[0], B[1], B[2]...
所以我能够阅读这个载体。 但是布尔很难,因为printf没有格式来打印它,我也无法输入控制台p B [0]; p B [1] ......
所以也许有人知道如何调试这样的东西?
bitset
是一个比vector<bool>
更好的选择。
除了其他原因,因为它支持流操作符,因此您可以将此内容流式传输出去。
当然,这假定数据类型在您的控制之下。
使用printf
您可以使用bitset
的to_string
编辑回应Enrico :
如果无法使用bitset
可以从GDB打印vector<bool>
元素,但是需要了解如何在GCC中实现vector<bool>
。 vector<bool>
的索引操作符没有返回一个bool
但一个vector<bool>::reference
这不是一个bool
但提供了一个转换操作符到一个bool
。
在GCC中,此reference
具有_M_p
成员,该成员是指向为vector<bool>
类分配的存储的指针,以及一个_M_mask
成员,可用于屏蔽除索引位之外的所有内容。 这两者的组合产生零或非零值。 零表示该位未设置,非零表示该位已设置。
对于vector<bool> foo
您可以使用GDB命令打印此组合:
print *(foo [i] ._ M_p)&foo [i] ._ M_mask
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.