0

実行中の .NET アプリケーションで文字列テーブルの内容を確認する方法はありますか?

通常の文字列連結を使用するコンソール アプリケーションと、文字列ビルダーを使用するコンソール アプリケーションを比較したいと思います。

4

1 に答える 1

2

ClrMDを使用してプロセスにアタッチし、そこから情報を取得できます。次の行に沿った何かが機能するはずです。

var proc = Process.GetProcessesByName("myapp.exe").FirstOrDefault();
using (var target = DataTarget.AttachToProcess(proc.Id, 1000))
{
    var runtime = target.ClrVersions[0].CreateRuntime();
    var heap = runtime.GetHeap();
    foreach (var obj in heap.EnumerateObjectAddresses())
    {
        var type = heap.GetObjectType(obj);
        if (type.Name == "System.String")
        {
            var value = (string)type.GetValue(obj);
            // Write value to disk or something.
        }
    }
}
于 2015-11-27T11:55:30.620 に答える