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

C++ 如何在WinDbg中查看成员变量的值?,c++,debugging,windbg,C++,Debugging,Windbg,命令x对我来说从来都不起作用。我可以做dv,它显示局部变量,但不显示类的成员变量。我一直依赖“监视局部变量”窗口来查看这些值,但如何通过x命令查看它们 例如,我在模块Db中有一个变量!MyRecordSet::m_strQuery如何查看m_strQuery的值 我特别喜欢使用通配符查看所有成员变量,如下所示: x Db!MyRecordSet m_* 但是它返回时不做任何操作或不显示任何消息。它只是像什么都没发生一样返回。如果我正确地获取了MASM文档,那么对于符号来说,使用两个冒号的语法应

命令
x
对我来说从来都不起作用。我可以做
dv
,它显示局部变量,但不显示类的成员变量。我一直依赖“监视局部变量”窗口来查看这些值,但如何通过
x
命令查看它们

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

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

x Db!MyRecordSet m_*

但是它返回时不做任何操作或不显示任何消息。它只是像什么都没发生一样返回。

如果我正确地获取了MASM文档,那么对于符号来说,使用两个冒号的语法应该可以:

使用两个冒号(::)或两个下划线(_u)表示类的成员

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

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

dt -r Db!MyRecordSet <address>

另一个选择可以是C++评估< /P>

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

看看这个

简单地说,该命令如下所示:
dt-b模块名!classname 0xffffff`xxxxxxxx memberofclass

现在有了dx命令

这里我有一个C++函数,带有一个局部的图片对象;为了显示一个成员(“字段”),我使用了以下方法:

0:000>dx\u picture.rows

_picture.rows    : 400 [Type: int]
这里是dv的结果,显示我实际上在函数中有两个图片对象:

0:000>dv

   _picture2 = class cv::Mat
   _picture = class cv::Mat

有一个
x
命令(=检查符号),它根本不起作用,或者我缺少它的语法!?我不知道如何访问/提及成员变量。它在一个模块中,而不是在一个类及其成员中。它做了一些不同的事情:它在寻找符号。一旦找到,请使用
dt
(显示类型)。@ThomasWeller它确实找到函数,但为什么它找不到成员变量,这些变量也是符号我主要使用的是release Build
x
实际上仍然不显示成员变量,通配符也不适用于
dt
。我知道它应该,但不知道为什么没有。谢谢你的发帖。下次将尝试此选项。您应该参考较新版本来限定您的答案dx在提出问题时不可用
_picture.rows    : 400 [Type: int]
   _picture2 = class cv::Mat
   _picture = class cv::Mat