Lio*_*ior 4 c++ exception conditional-breakpoint
我们有内存覆盖问题.在某些时候,在我们的程序过程中,内存位置被覆盖并导致程序崩溃.问题仅在发布模式下发生.在调试时,一切都很好.这是一个经典的C/C++ bug,也是一个很难找到的bug.
我想知道是否有办法添加一些"调试代码"来监视这个内存位置,并在更改后调用回调.这基本上是调试器在调试模式下可以做的事情('数据断点'),但我们在发布时需要类似的东西.
Rob*_*ker 10
如果您可以控制变量的位置,那么您可以在专用页面上分配它,并设置页面的权限以允许仅使用VirtualProtect进行读取(在Windows上...不确定Linux).
这样,当有人试图写入时,您将获得访问冲突.使用异常翻译器功能,您可以将其视为回调.
即使您无法直接移动变量(例如,它是类成员),也许您可以在变量周围添加足够的填充以确保它位于专用页面上并使用相同的方法.