我有一个bool变量应该是true,但有时会设置为false。我已经设置了一个内存断点来查看改变它的内容。令我惊讶的是,断点没有击中,但变量再次变为假。
什么可以在没有内存断点的情况下改变内存?
答案 0 :(得分:4)
一些想法。
如果将bool值传递给内核函数并且正在改变它(或者内核函数调用可能会覆盖内存,因为它被错误地调用),那么就不会触发数据断点。
如果您正在使用多个进程和另一个未被调试的进程,则写入该内存位置,然后断点将不会被触发。
(编辑)正如评论中指出的那样,硬件断点开启的内存中的DMA也将无法被接收。
我的猜测是你没有在某个地方适当地检查缓冲区大小而你正在被(1)命中,也许是从文件中读取数据?