我可以在正在运行的进程中看到String表的内容吗?

时间:2015-11-27 11:44:35

标签: c# .net string cil string-table

有什么办法可以在正在运行的.NET应用程序中看到字符串表的内容吗?

我想比较一个控制台应用程序与vanilla字符串concatinations和一个使用字符串builder。

1 个答案:

答案 0 :(得分: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.
        }
    }
}