【发布时间】:2018-08-09 21:30:09
【问题描述】:
我有一个对象的 64 位引用,其中引用的低 32 位被 0xFFFFFFFF 覆盖。我不知道如何在引用本身的字节上设置数据断点,因为监视窗口让我无法获取引用的地址。
【问题讨论】:
-
一种可能的方法:找到一些代码,其中引用被初始化或值被更新。查看反汇编代码以了解代码如何访问引用以获取所引用的值。
-
Visual Studio 能否在特定地址设置数据断点?如果是这样,您可以找出与引用相邻的对象的地址,然后将其偏移。
-
我不确定我是否理解问题所在。在数据断点对话框中添加 &yourreference 有什么问题?它也接受表达式。
-
引用没有自己的内存地址(参见Is there any way to find the address of a reference?)。
&yourreference返回yourreference所指的地址,而不是yourreference本身的地址。所以你不能直接在引用上设置数据断点,只能在它引用的地址上设置。把引用改成指针,就可以得到指针的地址,在上面设置数据断点。 -
@ZDF 引用通常使用指针实现。虽然引用在代码中没有可识别的地址,但它通常在内存中具有可寻址的值,您可以在调试器中看到。
标签: c++ visual-c++