我正在使用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
现在,我只需要找到一种方法,不再查看内存地址。
答案 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>