在WinDbg中使用.ForEach时出错

Dhw*_*hah 5 windbg

为什么我Invalid parameter poi(adr+4)在调试转储文件时在WinDbg中运行以下命令?

.foreach ( adr { !dumpheap -mt 66df13d4 -short } ) { !do poi(adr+4); }
Run Code Online (Sandbox Code Playgroud)

以下显示adr正在填充的值很好.

.foreach ( adr { !dumpheap -mt 66df13d4 -short } ) { .echo adr; }
Run Code Online (Sandbox Code Playgroud)

我想获取存储在System.Web.Caching.CacheEntry对象的第4个偏移处的.NET字符串变量的内容.

Joh*_*ohn 5

你需要有空间adr或使用${adr}.这在MSDN中有记录

注意 当字符串变量出现在OutCommands中时,它必须用空格包围.如果它与任何其他文本相邻 - 甚至是括号 - 它将不会被当前标记值替换,除非您使用$ {}(Alias Interpreter)标记.