我有一个名为Foo的类型,它有一个名为length的字段。我想在Windbg中编写一个循环语句,它将在托管堆中转储Foo类型的所有对象实例的长度字段?
提前谢谢, 乔治答案 0 :(得分:3)
这是一个我没有测试过的脚本,但可能会帮你解决问题。我基于dumping out all session variables on the heap for ASP.net.
的苔丝脚本r @$t0=0;
$$ Loop to get all foo's
.foreach (CurrentFoo {!dumpheap -type George.George2.Foo -short}){
$$ Increment # of Foo's
r @$t0 = @$t0+1
.printf "Length:\t%d\n", poi(${CurrentFoo}+0xc);
}
.printf "Number of Foo's: %d\n\n\n\n\n\n\n\n\n", @$t0;
这个技巧将弄清楚length属性从主Foo引用偏移的字节数,并用正确的偏移字节数替换printf行中的“0xc”。
你应该可以通过在你的一个Foo上做一个!dumpobject并查看它的结构来做到这一点。
希望有所帮助。