/// <summary> /// Finds the IL offset for the specified frame. /// </summary> /// <param name="frame">The frame.</param> private static uint FindIlOffset(Microsoft.Diagnostics.Runtime.ClrStackFrame frame) { ulong ip = frame.InstructionPointer; uint last = uint.MaxValue; foreach (var item in frame.Method.ILOffsetMap) { if (item.StartAddress > ip) { return(last); } if (ip <= item.EndAddress) { return((uint)item.ILOffset); } last = (uint)item.ILOffset; } return(last); }
/// <summary> /// Finds the IL offset for the specified frame. /// </summary> /// <param name="frame">The frame.</param> private static uint FindIlOffset(Microsoft.Diagnostics.Runtime.ClrStackFrame frame) { return(FindIlOffset(frame.Method, frame.InstructionPointer)); }
/// <summary> /// Initializes a new instance of the <see cref="ClrMdStackFrame"/> class. /// </summary> /// <param name="provider">The CLR provider.</param> /// <param name="clrStackFrame">The CLR stack frame.</param> public ClrMdStackFrame(CLR.ClrMdProvider provider, Microsoft.Diagnostics.Runtime.ClrStackFrame clrStackFrame) { Provider = provider; ClrStackFrame = clrStackFrame; }
public BacktraceStackFrame(Microsoft.Diagnostics.Runtime.ClrStackFrame frame) { FunctionName = frame.Method.Name; Library = frame.ModuleName; }