全局变量已更改,但内存断点未被命中

时间:2010-03-02 11:18:54

标签: visual-studio debugging winapi breakpoints

我有一个bool变量应该是true,但有时会设置为false。我已经设置了一个内存断点来查看改变它的内容。令我惊讶的是,断点没有击中,但变量再次变为假。

什么可以在没有内存断点的情况下改变内存?

1 个答案:

答案 0 :(得分:4)

一些想法。

  1. 如果将bool值传递给内核函数并且正在改变它(或者内核函数调用可能会覆盖内存,因为它被错误地调用),那么就不会触发数据断点。

  2. 如果您正在使用多个进程和另一个未被调试的进程,则写入该内存位置,然后断点将不会被触发。

  3. (编辑)正如评论中指出的那样,硬件断点开启的内存中的DMA也将无法被接收。

  4. 我的猜测是你没有在某个地方适当地检查缓冲区大小而你正在被(1)命中,也许是从文件中读取数据?