可以使用以下命令转储所有字符串 !dumpheap -type System.string
如何只转储或打印那些开始或包含特定“字符串”的字符串
例子。我只想查看包含“/my/app/request”的字符串
为此,请使用 sosex 而不是 sos。它有一个!strings
命令,允许您使用该/m:<filter>
选项过滤字符串。
使用!sosex.strings。有关根据内容和/或长度过滤字符串的选项,请参阅 !sosex.help。
如果您真的想不使用 SOSEX,请尝试
.foreach (string {!dumpheap -short -type System.String}) { .foreach (search {s -u ${string}+c ${string}+c+2*poi(${string}+8) "mySearchTerm"}) { du /c80 ${string}+c }}
它用
/c80 只是为了更好的输出。如果您喜欢字符串的 .NET 详细信息,也可以使用!do ${string}
而不是。du /c80 ${string}+c
不确定 !dumpheap 是否支持。您始终可以使用 .logopen 将输出重定向到文件并对其进行后处理。对于更优雅(因此也更复杂)的解决方案,您还可以使用 .shell 将命令输出重定向到 shell 进程进行解析。这是一个例子:
http://blogs.msdn.com/b/baleixo/archive/2008/09/06/using-shell-to-search-text.aspx
您还可以查看 .shell 文档了解更多详细信息:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565339(v=vs.85).aspx