코드 : 결과Microsoft.Diagnostics.Runtime을 사용하여 StackTrace에서 메서드에 대한 정보를 얻으려면 어떻게해야합니까?
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());
}
}
}
}
}
, 내가 대신 메소드 이름의 수 - "UNKNOWN"를. 하지만 in 메서드는 "InstructionPointer"필드입니다. 자세한 정보를 제공 할 수 있습니까?
이는 ClrMD의 유효한 사용법이 아닙니다. 고정 된 프로세스 대신 자신의 스레드를보고 있습니다. 미니 덤프 나 디버거 중단 점에서 얻을 수있는 것처럼. 자신의 스레드가 코드를 실행 중일 때 스택이 계속 변경됩니다. thread.StackTrace를 사용하는 순간에 코드가 DAC 내에서 실행 중일 수 있습니다. 네이티브 C++ 코드는 알 수 없습니다. –
다른 프로세스를 실행하면 동일한 결과가 나타납니다. –
https://github.com/dudikeleti/DumpMiner –