Как получить информацию о методах в 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 указывает, что у метода нет связанного с ним управляемого метода. Попробуйте прикрепить его к другому процессу, а также пройтись по всем кадрам во всех стеках, я уверен, что вы что-нибудь найдете.

Здесь вы можете найти рабочий пример дампа стека, включая объекты стека.

Пример стека дампов

Другие вопросы по тегам