Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 /// <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));
 }
Esempio n. 3
0
 /// <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;
 }