有什么办法可以在正在运行的.NET应用程序中看到字符串表的内容吗?
我想比较一个控制台应用程序与vanilla字符串concatinations和一个使用字符串builder。
答案 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.
}
}
}