gdb“对数字的无效二进制操作”
在工作中,当用gdb调试我们的程序时,它有时会重复 一个简单的next命令,对数字执行无效的二进制操作。 非常讨厌。谷歌搜索绝对找不到任何线索。它是C++,所以 也许在某种程度上,gdb内部有些东西被弄糊涂了;我没有 线索 有人吗 我无法将格式设置为正确的注释,因此我将添加到此区域gdb“对数字的无效二进制操作”,gdb,Gdb,在工作中,当用gdb调试我们的程序时,它有时会重复 一个简单的next命令,对数字执行无效的二进制操作。 非常讨厌。谷歌搜索绝对找不到任何线索。它是C++,所以 也许在某种程度上,gdb内部有些东西被弄糊涂了;我没有 线索 有人吗 我无法将格式设置为正确的注释,因此我将添加到此区域 257 SingleBitBusMap::const_iterator sbb = fSingleBitBusMap.find(constituents.first.c_str()); (gdb) nex
257 SingleBitBusMap::const_iterator sbb = fSingleBitBusMap.find(constituents.first.c_str());
(gdb) next
Invalid binary operation on numbers.
(gdb)
fSingleBitBusMap是一个std::map
成分是std::对
components.first是一个std::字符串
在它说对数字的二进制操作无效后,bt给了我整个回溯:
(gdb) bt
#0 0x000000000040fb40 in std::string::c_str ()
(gdb)
不过,先做tbreak+1和cont,然后再做bt
再次给我一个有效的回溯。我能想到的唯一可能发生这种情况的方法是:您有一些活动的显示,它要求GDB在每次停止时对某个表达式求值,而该表达式无法求值,从而导致对错误数字的无效二进制操作
使用“信息显示”查看当前的自动显示表达式。您是否可以共享运行gdb的代码段以及观察到错误的gdb会话输出。在报告无效二进制操作后,这里是另一个回溯:gdb对数字的无效二进制操作。std::operator中的gdb bt 6 0 0x000000000040f2c0这里有一个简单的例子:当前行是一个std::string=char缓冲区,在无效的二进制运算符之后,bt在std::string::operator=中显示我们。我没有活动的显示。