使用Windbg仅获取对象的属性值的方法是什么?

时间:2018-11-08 14:52:56

标签: windbg dump pykd

我正在使用PYKD进行转储调试,因此我正在使用c:\python37\scripts PYKD来获取有关对象的信息。

问题是:dbgCommand()结果需要解析才能使用,如下面的示例所示:

dbgCommand()

我只对大小本身(source code : result = dbgCommand(("dt -c CStringArray m_nSize " + pointer_format) % (ptr)).split(' : ') example : dt -c CStringArray m_nSize 0x03966ce8 example output : <application>!CStringArray +0x008 m_nSize 0n16 )感兴趣,我可以解析结果以获取该大小,但是由于我有很多对象(大约100,000个),因此变得非常耗时-因此,我想尽可能地限制结果。

有没有一种方法(使用其他显示选项,使用0n16以外的其他命令,如果需要,使用本地可视化工具)来获得以下情况:

dt

与此同时,我已经使用dt <options> CStringArray m_nSize 0x03966ce8 0n16 // only that, nothing else 命令走了一步,如您所见:

dd

现在,我只需要找到一种方法,不再查看内存地址。

2 个答案:

答案 0 :(得分:2)

为什么不想使用pykd中的typedVar类?

尝试:

print( typedVar('CStringArray', address).m_nSize )

答案 1 :(得分:0)

0:000> dt -c foo m_nsize
Local var @ 0x2dfdb8 Type CStringArray
+0x008 m_nSize 0n5
0:000> .printf "%x\n" , @@c++(foo.m_nSize)
5
0:000>