gpt4 book ai didi

c++ - 观察内存位置/从代码安装 'data breakpoint'?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:52 25 4
gpt4 key购买 nike

我们有内存覆盖问题。在某个时刻,在我们的程序运行过程中,内存位置被覆盖并导致我们的程序崩溃。该问题仅在 Release模式下发生。在调试时,一切都很好。这是一个典型的 C/C++ 错误,而且很难定位。

我想知道是否有一种方法可以添加一些“调试代码”来监视此内存位置并在其更改后调用回调。这基本上是调试器在 Debug模式下可以做的(“数据断点”),但我们在发布中需要类似的东西。

最佳答案

如果您可以控制变量的位置,那么您可以将它分配到专用页面上,并使用VirtualProtect 将页面的权限设置为只允许读取。 (在 Windows 上……不确定是否适用于 Linux)。

这样,当有人试图写入时,您将遇到访问冲突。使用异常翻译器函数,您可以将其视为回调。

即使您不能直接移动变量(例如,它是一个类成员),也许您可​​以在变量周围添加足够的填充以确保它位于专用页面上并使用相同的方法。

关于c++ - 观察内存位置/从代码安装 'data breakpoint'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com