将.dvalloc的结果存储到变量

时间:2016-09-18 15:06:07

标签: windbg virtual-memory

是否可以将.dvalloc的结果存储到变量?

我的意思是分配内存的起始地址

1 个答案:

答案 0 :(得分:2)

我不认为在一个命令中很容易实现,所以所有选项都有点讨厌:

手动存储

亲:容易理解。使用复制/粘贴(右键单击复制,右键单击以粘贴BTW)

0:000> .dvalloc 100000
Allocated 100000 bytes starting at 00000000`00290000
0:000> r $t9 = 00000000`00290000
0:000> ? $t9
Evaluate expression: 2686976 = 00000000`00290000

使用WinDbg脚本

亲:没有错别字。很好用,例如如果您只需要一次记忆,则从.cmdtree开始。

0:000> .foreach /pS 5 (addr {.dvalloc 100000}) {r $t8=${addr}}
0:000> ? $t8
Evaluate expression: 6881280 = 00000000`00690000

您还可以定义别名

,而不是注册
0:000> as /c memory .foreach /pS 5 (addr {.dvalloc 100000}) {.echo ${addr}}
0:000> ? memory
Evaluate expression: 12124160 = 00000000`00b90000

先存储地址,然后在.dvalloc

中使用

此方法的缺点:您需要知道地址是否未使用。

0:000> r $t7=01000000; .dvalloc /b $t7 100000
Allocated 100000 bytes starting at 00000000`01000000
0:000> ? $t7
Evaluate expression: 16777216 = 00000000`01000000