C++ 尝试监视阵列时,调试会话冻结

C++ 尝试监视阵列时,调试会话冻结,c++,ide,gdb,anjuta,codelite,C++,Ide,Gdb,Anjuta,Codelite,我正在使用ubuntu 12.04。我已经使用了安卓和Cordelide作为IDE的C++学校项目。 然而,对于这两个问题,我都遇到了一个问题: 启动调试器后,一切正常,直到我尝试在watches部分添加数组为止。它不显示任何内容,当我尝试继续调试时,它会冻结,我必须停止调试会话。我必须提到的是,观察变量很有效 谢谢, LE:事实上,调试功能只有在大型阵列的情况下才会冻结……这可能是codelite的一个bug。有什么意见吗 我必须提到的是,观察变量很有效 当您在变量上设置观察点时,GDB可能会

我正在使用ubuntu 12.04。我已经使用了安卓和Cordelide作为IDE的C++学校项目。 然而,对于这两个问题,我都遇到了一个问题: 启动调试器后,一切正常,直到我尝试在watches部分添加数组为止。它不显示任何内容,当我尝试继续调试时,它会冻结,我必须停止调试会话。我必须提到的是,观察变量很有效

谢谢,

LE:事实上,调试功能只有在大型阵列的情况下才会冻结……这可能是codelite的一个bug。有什么意见吗

我必须提到的是,观察变量很有效

当您在变量上设置观察点时,GDB可能会说
硬件观察点N
(但您的IDE可能正在隐藏该消息)

当您在x86处理器上设置大于8字节的观察点时,GDB无法设置硬件观察点(因为x86硬件不支持此类观察点)。GDB设置了一个软件监视点。软件观察点的实施如下:

  • 单步执行程序
  • 价值观改变了吗?否->转到步骤1。是的,停下来
  • 软件监控点真的很慢。如果您使用
    top
    查看您的系统,您可能会发现GDB正在消耗100%的CPU


    如果您真的需要查看整个阵列,请展示如何使用valgrind完成此操作。

    现代硬件支持最多查看16字节,而不是word。它实际消耗100%的CPU,执行下一条指令大约需要一分钟。多谢各位@需要引用Dani。根据,监视点的最大大小为8字节;我已经更新了答案。@EmployedRussian:从该页面:“启用四个地址断点条件”,“每个断点……指定它们是监视……一(00b)、两(01b)、八(10b)还是四(11b)个字节”。实际上是32个字节,我不知道有8个。@Dani是字节,不是单词。