我們可以使用下面的命令 轉儲全部串dumpheap型System.stringWinDBG的 - 如何轉儲匹配給定過濾器字符串
如何可以轉儲或打印只有那些開始或包含字符串!特定的「字符串」
示例。我只想查看包含「/ my/app/request」的字符串
我們可以使用下面的命令 轉儲全部串dumpheap型System.stringWinDBG的 - 如何轉儲匹配給定過濾器字符串
如何可以轉儲或打印只有那些開始或包含字符串!特定的「字符串」
示例。我只想查看包含「/ my/app/request」的字符串
不確定是否!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
使用sosex.strings。請參閱!sosex.help以獲取根據內容和/或長度過濾字符串的選項。
使用sosex代替sos進行此操作。它有一個!strings
命令,它允許您使用/m:<filter>
選項來過濾字符串。
如果你真的想要去沒有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
。
我希望看看我們是否可以使用.foreach form!DumpHeap輸出,只打印出包含指定字符串的字符串。 – imasud
我試圖使用.shell,它適用於短字符串。對於長字符串,它受到'!do'命令的有限字符串輸出或'du'命令的換行符的影響。在沒有SOSEX的情況下查看我的答案。這是我的.shell命令:'.shell -ci「.foreach(string {!dumpheap -short -type System.String}){du/c80 $ {string} + c L80}」find「mySearchTerm」' –