4

次のコマンドを使用してすべての文字列をダンプできます !dumpheap -type System.string

特定の「文字列」を開始または含む文字列のみをダンプまたは出力するにはどうすればよいですか

例。「/my/app/request」を含む文字列を表示することにのみ興味があります

4

4 に答える 4

4

これには、sos の代わりに sosex を使用します。オプションを使用して!strings文字列をフィルタリングできるコマンドがあり/m:<filter>ます。

于 2012-09-12T14:46:39.937 に答える
3

!sosex.stringsを使用します。コンテンツや長さに基づいて文字列をフィルタリングするオプションについては、!sosex.helpを参照してください。

于 2012-09-12T14:44:45.130 に答える
1

本当に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 }}

それは使用しています

  • !dumpheap で .NET ヒープ上のすべての文字列を取得
  • .foreach を繰り返し処理する
  • 部分文字列を検索する
  • .foreach をもう一度実行して、s が何かを見つけたかどうかを調べます
  • 文字列の最初の文字 (+c) と文字列の長さ (+8) を取得するためのオフセット計算 (文字ではなくバイトを取得するために 2 を掛けます)。これらは、64 ビット アプリケーションの場合に適応させる必要があります。

/c80 は、出力を向上させるためのものです。String の .NET 詳細が必要な場合は、!do ${string}代わりに を使用することもできます。du /c80 ${string}+c

于 2013-12-27T23:15:11.863 に答える
1

!dumpheap がそれをサポートしているかどうかは不明です。いつでも .logopen を使用して、出力をファイルにリダイレクトし、それを後処理できます。より洗練された (したがってより複雑な) ソリューションとして、.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

于 2012-09-12T14:32:28.287 に答える