Как получить информацию о методах в StackTrace с помощью Microsoft.Diagnostics.Runtime?
Код:
using System.Diagnostics;
using System.Linq;
using Microsoft.Diagnostics.Runtime;
using Microsoft.Diagnostics.Runtime.Utilities;
using Microsoft.Diagnostics.Runtime.Utilities.Pdb;
namespace myDiagnostics
{
public class myStackTraceInfo
{
public void Atach()
{
using (DataTarget target = DataTarget.AttachToProcess(Process.GetCurrentProcess().Id, 5000, AttachFlag.Passive))
{
ClrRuntime runtime = target.ClrVersions.First().CreateRuntime();
foreach (ClrThread thread in runtime.Threads)
{
foreach (ClrStackFrame frame in thread.StackTrace)
Console.Write(frame.Method.ToString());
}
}
}
}
}
В результате я получаю вместо имен методов - "НЕИЗВЕСТНО". Но в методе in есть поле "InstructionPointer", может, оно даст больше информации?
1 ответ
UNKNOWN указывает, что у метода нет связанного с ним управляемого метода. Попробуйте прикрепить его к другому процессу, а также пройтись по всем кадрам во всех стеках, я уверен, что вы что-нибудь найдете.
Здесь вы можете найти рабочий пример дампа стека, включая объекты стека.