gpt4 book ai didi

c++ - 如何在 WinDbg 中查看成员变量的值?

转载 作者:行者123 更新时间:2023-11-30 03:38:58 34 4
gpt4 key购买 nike

x 命令对我来说从来没有真正起作用。我可以做 dv 显示局部变量但不显示类的成员变量。我一直依靠 watch locals variables 窗口来查看这些值,但如何通过 x 命令查看它们?

例如,我在模块 Db!MyRecordSet::m_strQuery 中有一个变量,我如何查看 m_strQuery 的值?

我特别喜欢使用通配符来查看所有成员变量,如下所示:

x Db!MyRecordSet m_*

但它返回时没有执行任何操作或显示任何消息..它就像什么都没发生一样返回。

最佳答案

如果我正确地理解了 MASM 文档,那么对于符号来说,带有两个冒号的语法应该没问题:

Use two colons (::) or two underscores (__) to indicate the members of a class

在发布版本中,您可能需要考虑编译器能够优化成员变量。

除此之外,x 命令只能显示符号本身,不会将其映射到内存地址,因此我认为您正在寻找 dt (display type) 命令,与

dt -r Db!MyRecordSet <address>

用于递归显示或扩展到给定的层级

dt Db!MyRecordSet... <address>

对于 3 层树。

示例,引用自 WinDbg 的文档(因为我手头没有示例):

0:000> dt nt!_PEB CriticalSectionTimeout.. 7ffdf000 
+0x070 CriticalSectionTimeout : 0xffffe86d`079b8000
+0x000 LowPart : 0x79b8000
+0x004 HighPart : -6035
+0x000 u :
+0x000 LowPart : 0x79b8000
+0x004 HighPart : -6035
+0x000 QuadPart : -25920000000000

另一种选择可能是 C++ 评估

??@@c++(variable->member)

关于c++ - 如何在 WinDbg 中查看成员变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133304/

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