我只是在调试c++程序,我很有值(value)
vector<bool> B(n, 0);
我的问题是如何在 gdb 控制台中打印它的值?因为 eclipse IDE 不太聪明,无法以可编辑的格式呈现它。
当我有整数 vector 时,我可以做类似的事情:
printf "%x %x %x", B[0], B[1], B[2]...
所以我能够读取这个 vector 。但是使用 boolean 很难,因为 printf 没有打印它的格式,我也无法在控制台 p B[0] 中输入; pB[1] ...
所以也许有人知道如何调试这样的东西?
最佳答案
bitset
是比 vector<bool>
更好的选择.
还有其他原因,因为它支持流操作符,所以你可以把这个东西流出来。
这当然假设数据类型在您的控制之下。
与 printf
你可以使用 bitset
的 to_string
编辑以回应 Enrico :
如果 bitset
不能使用 可以打印 vector<bool>
来自 GDB 的元素,但是如何 vector<bool>
在 GCC 中实现需要了解。 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
关于c++ - gdb 如何打印 vector<bool> 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301336/