windows - 在 Visual Studio 的内存地址观察一个类对象

标签 windows visual-studio debugging

我正在调试用户转储文件,并且在堆栈跟踪的顶部有此类成员函数

  • 堆栈跟踪是这样的 -

msvcr80.dll!__invalid_parameter_noinfo() + 0xc 字节 - 第一帧 msvcr80.dll!__invalid_parameter_noinfo() + 0xc 字节 - 第二帧
myDLL!myClass::myClassMemFunc(int val = 90) - 第三帧

现在,当我跳转到第 3 帧时——“this”指针值无效(“this”值是从 ECX 寄存器中检索的——但是 ECX 寄存器值在上面堆栈的前两个函数中发生了变化痕迹 - ) - 所以我看不到我的类对象的实际成员变量 -

但是我知道我的类对象的地址 - 这是 0x0012ECE0

当我试图用 - 观察那个内存地址时 (我的类(class)*)(0x0012ECE0)

我得到一个 CXX0019:错误:类型转换错误

甚至 (myClass)(0x0012ECE0) 也会产生相同的错误。

我是不是做错了什么? - 检索类对象值的正确方法是什么?

最佳答案

只是盲目猜测:试试 (myDLL!myClass*)(0x0012ECE0)

另外一个问题,你怎么确定是你对象的地址呢?

作为旁注,尝试 windbg - 在内存/堆栈周围查找对象要简单得多。

关于windows - 在 Visual Studio 的内存地址观察一个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/876803/

相关文章:

visual-studio - 用于测试 IDE 配色方案的代码示例

visual-studio - 在您的 Visual Studio 中拥有更多项目是否会增加编译时间?

visual-studio - VS2013 禁用 Web 发布事件窗口

android - Visual Studio 如何在 Android/Xamarin 调试运行期间禁用 VS 输出窗口的自动滚动到底部?

c# - 在 C# 中捕获调试输出

debugging - 使用 CLion 构建 Python C 扩展 - 如何调试

windows - 为什么 < C-a> (CTRL+A) 在 Windows 的 gvim 下不工作?

windows - 对比 2010 : error LNK2028: unresolved token (0A000342) "extern "C"int __stdcall

c++ - 如何以编程方式禁用 Windows 10 中的 Wi-fi 感知?

Windows Git Bash shell 找不到命令?