internal override IMethodDescData GetMDForIP(ulong ip) { ulong md = _sos.GetMethodDescPtrFromIP(ip); if (md == 0) { if (!_sos.GetCodeHeaderData(ip, out CodeHeaderData codeHeaderData)) { return(null); } if ((md = codeHeaderData.MethodDesc) == 0) { return(null); } } V45MethodDescDataWrapper mdWrapper = new V45MethodDescDataWrapper(); if (!mdWrapper.Init(_sos, md)) { return(null); } return(mdWrapper); }
protected override DesktopStackFrame GetStackFrame(DesktopThread thread, byte[] context, ulong ip, ulong framePtr, ulong frameVtbl) { DesktopStackFrame frame; if (frameVtbl != 0) { ClrMethod innerMethod = null; string frameName = _sos.GetFrameName(frameVtbl); ulong md = _sos.GetMethodDescPtrFromFrame(framePtr); if (md != 0) { V45MethodDescDataWrapper mdData = new V45MethodDescDataWrapper(); if (mdData.Init(_sos, md)) { innerMethod = DesktopMethod.Create(this, mdData); } } frame = new DesktopStackFrame(this, thread, context, framePtr, frameName, innerMethod); } else { frame = new DesktopStackFrame(this, thread, context, ip, framePtr, _sos.GetMethodDescPtrFromIP(ip)); } return(frame); }
internal override IMethodDescData GetMethodDescData(ulong md) { V45MethodDescDataWrapper wrapper = new V45MethodDescDataWrapper(); if (!wrapper.Init(_sos, md)) { return(null); } return(wrapper); }
internal override IMethodDescData GetMDForIP(ulong ip) { ulong md; if (_sos.GetMethodDescPtrFromIP(ip, out md) < 0 || md == 0) { CodeHeaderData codeHeaderData; if (_sos.GetCodeHeaderData(ip, out codeHeaderData) < 0) { return null; } if ((md = codeHeaderData.MethodDescPtr) == 0) return null; } V45MethodDescDataWrapper mdWrapper = new V45MethodDescDataWrapper(); if (!mdWrapper.Init(_sos, md)) return null; return mdWrapper; }
protected override DesktopStackFrame GetStackFrame(DesktopThread thread, int res, ulong ip, ulong framePtr, ulong frameVtbl) { DesktopStackFrame frame; StringBuilder sb = new StringBuilder(); sb.Capacity = 256; uint needed; if (res >= 0 && frameVtbl != 0) { ClrMethod innerMethod = null; string frameName = "Unknown Frame"; if (_sos.GetFrameName(frameVtbl, (uint)sb.Capacity, sb, out needed) >= 0) frameName = sb.ToString(); ulong md = 0; if (_sos.GetMethodDescPtrFromFrame(framePtr, out md) == 0) { V45MethodDescDataWrapper mdData = new V45MethodDescDataWrapper(); if (mdData.Init(_sos, md)) innerMethod = DesktopMethod.Create(this, mdData); } frame = new DesktopStackFrame(this, thread, framePtr, frameName, innerMethod); } else { ulong md; if (_sos.GetMethodDescPtrFromIP(ip, out md) >= 0) { frame = new DesktopStackFrame(this, thread, ip, framePtr, md); } else { frame = new DesktopStackFrame(this, thread, ip, framePtr, 0); } } return frame; }
internal override IMethodDescData GetMethodDescData(ulong md) { V45MethodDescDataWrapper wrapper = new V45MethodDescDataWrapper(); if (!wrapper.Init(_sos, md)) return null; return wrapper; }
internal override IMethodDescData GetMDForIP(ulong ip) { ulong md; if (m_sos.GetMethodDescPtrFromIP(ip, out md) < 0 || md == 0) return null; V45MethodDescDataWrapper mdWrapper = new V45MethodDescDataWrapper(); if (!mdWrapper.Init(m_sos, md)) return null; return mdWrapper; }