public BreakpointResolutionLocationData(BP_RESOLUTION_LOCATION location, bool releaseComObjects) { if (location.bpType != (uint)enum_BP_TYPE.BPT_DATA) throw new ArgumentException(); if (location.unionmember1 != IntPtr.Zero) { _dataExpression = Marshal.PtrToStringBSTR(location.unionmember1); if (releaseComObjects) Marshal.FreeBSTR(location.unionmember1); } if (location.unionmember2 != IntPtr.Zero) { _function = Marshal.PtrToStringBSTR(location.unionmember2); if (releaseComObjects) Marshal.FreeBSTR(location.unionmember2); } if (location.unionmember3 != IntPtr.Zero) { _image = Marshal.PtrToStringBSTR(location.unionmember3); if (releaseComObjects) Marshal.FreeBSTR(location.unionmember3); } _flags = (enum_BP_RES_DATA_FLAGS)location.unionmember4; }
int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if (dwFields.HasFlag(enum_BPRESI_FIELDS.BPRESI_PROGRAM)) { pBPResolutionInfo[0].pProgram = Engine; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } if (dwFields.HasFlag(enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION)) { string fileName; int lineNumber; TEXT_POSITION start, end; BoundBreakpoint.PendingBreakpoint.GetLocation(out fileName, out lineNumber, out start, out end); var addr = new AD7MemoryAddress(Engine, fileName, lineNumber); addr.DocumentContext = new AD7DocumentContext(fileName, start, end, addr); var location = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE, unionmember1 = Marshal.GetComInterfaceForObject(addr, typeof(IDebugCodeContext2)) }; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } return VSConstants.S_OK; }
int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if (dwFields.HasFlag(enum_BPRESI_FIELDS.BPRESI_PROGRAM)) { pBPResolutionInfo[0].pProgram = Engine; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } if (dwFields.HasFlag(enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION)) { string fileName; int lineNumber; TEXT_POSITION start, end; BoundBreakpoint.PendingBreakpoint.GetLocation(out fileName, out lineNumber, out start, out end); var addr = new AD7MemoryAddress(Engine, fileName, lineNumber); addr.DocumentContext = new AD7DocumentContext(fileName, start, end, addr); var location = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE, unionmember1 = Marshal.GetComInterfaceForObject(addr, typeof(IDebugCodeContext2)) }; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } return(VSConstants.S_OK); }
// Gets the breakpoint resolution information that describes this breakpoint. int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { // The sample engine only supports code breakpoints. BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)enum_BP_TYPE.BPT_CODE; // The debugger will not QI the IDebugCodeContex2 interface returned here. We must pass the pointer // to IDebugCodeContex2 and not IUnknown. AD7MemoryAddress codeContext = new AD7MemoryAddress(m_engine, m_address); codeContext.SetDocumentContext(m_documentContext); location.unionmember1 = Marshal.GetComInterfaceForObject(codeContext, typeof(IDebugCodeContext2)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } if ((dwFields & enum_BPRESI_FIELDS.BPRESI_PROGRAM) != 0) { pBPResolutionInfo[0].pProgram = (IDebugProgram2)m_engine; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } return(Constants.S_OK); }
// Gets the breakpoint resolution information that describes this breakpoint. int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)_breakType; if (_breakType == enum_BP_TYPE.BPT_CODE) { // The debugger will not QI the IDebugCodeContex2 interface returned here. We must pass the pointer // to IDebugCodeContex2 and not IUnknown. AD7MemoryAddress codeContext = new AD7MemoryAddress(_engine, Addr, _functionName); codeContext.SetDocumentContext(_documentContext); location.unionmember1 = HostMarshal.RegisterCodeContext(codeContext); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } else if (_breakType == enum_BP_TYPE.BPT_DATA) { location.unionmember1 = HostMarshal.GetIntPtrForDataBreakpointAddress(EngineUtils.AsAddr(Addr, _engine.DebuggedProcess.Is64BitArch)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } } if ((dwFields & enum_BPRESI_FIELDS.BPRESI_PROGRAM) != 0) { pBPResolutionInfo[0].pProgram = (IDebugProgram2)_engine; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } return Constants.S_OK; }
// Gets the breakpoint resolution information that describes this breakpoint. int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { // The sample engine only supports code breakpoints. BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)enum_BP_TYPE.BPT_CODE; // The debugger will not QI the IDebugCodeContex2 interface returned here. We must pass the pointer // to IDebugCodeContex2 and not IUnknown. AD7MemoryAddress codeContext = new AD7MemoryAddress(m_engine, m_address); codeContext.SetDocumentContext(m_documentContext); location.unionmember1 = Marshal.GetComInterfaceForObject(codeContext, typeof(IDebugCodeContext2)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } if ((dwFields & enum_BPRESI_FIELDS.BPRESI_PROGRAM) != 0) { pBPResolutionInfo[0].pProgram = (IDebugProgram2)m_engine; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } return Constants.S_OK; }
// Gets the breakpoint resolution information that describes this breakpoint. int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)_breakType; if (_breakType == enum_BP_TYPE.BPT_CODE) { // The debugger will not QI the IDebugCodeContext2 interface returned here. We must pass the pointer // to IDebugCodeContext2 and not IUnknown. AD7MemoryAddress codeContext = new AD7MemoryAddress(_engine, Addr, _functionName); codeContext.SetDocumentContext(_documentContext); location.unionmember1 = HostMarshal.RegisterCodeContext(codeContext); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } else if (_breakType == enum_BP_TYPE.BPT_DATA) { location.unionmember1 = HostMarshal.GetIntPtrForDataBreakpointAddress(EngineUtils.AsAddr(Addr, _engine.DebuggedProcess.Is64BitArch)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } } if ((dwFields & enum_BPRESI_FIELDS.BPRESI_PROGRAM) != 0) { pBPResolutionInfo[0].pProgram = (IDebugProgram2)_engine; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } return(Constants.S_OK); }
public override void ToNativeForm(out BP_RESOLUTION_LOCATION location) { location.bpType = (uint)Type; location.unionmember1 = _function != null ? Marshal.StringToBSTR(_dataExpression) : IntPtr.Zero; location.unionmember2 = _function != null ? Marshal.StringToBSTR(_function) : IntPtr.Zero; location.unionmember3 = _function != null ? Marshal.StringToBSTR(_image) : IntPtr.Zero; location.unionmember4 = (uint)_flags; }
public override void ToNativeForm(out BP_RESOLUTION_LOCATION location) { location.bpType = (uint)Type; location.unionmember1 = Marshal.GetIUnknownForObject(_codeContext); location.unionmember2 = IntPtr.Zero; location.unionmember3 = IntPtr.Zero; location.unionmember4 = 0; }
public override void ToNativeForm(out BP_RESOLUTION_LOCATION location) { location.bpType = (uint)Type; location.unionmember1 = _function != null?Marshal.StringToBSTR(_dataExpression) : IntPtr.Zero; location.unionmember2 = _function != null?Marshal.StringToBSTR(_function) : IntPtr.Zero; location.unionmember3 = _function != null?Marshal.StringToBSTR(_image) : IntPtr.Zero; location.unionmember4 = (uint)_flags; }
public BreakpointResolutionLocationCode(BP_RESOLUTION_LOCATION location, bool releaseComObjects) { if (location.bpType != (uint)enum_BP_TYPE.BPT_CODE) throw new ArgumentException(); try { if (location.unionmember1 != IntPtr.Zero) _codeContext = Marshal.GetObjectForIUnknown(location.unionmember1) as IDebugCodeContext2; } finally { if (releaseComObjects && location.unionmember1 != IntPtr.Zero) Marshal.Release(location.unionmember1); } }
public static BreakpointResolutionLocation FromNativeForm(BP_RESOLUTION_LOCATION location, bool releaseComObjects) { switch ((enum_BP_TYPE)location.bpType) { case enum_BP_TYPE.BPT_CODE: return new BreakpointResolutionLocationCode(location, releaseComObjects); case enum_BP_TYPE.BPT_DATA: return new BreakpointResolutionLocationData(location, releaseComObjects); case enum_BP_TYPE.BPT_NONE: case enum_BP_TYPE.BPT_SPECIAL: default: throw new NotSupportedException(); } }
public int GetResolutionInfo(uint dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & (uint)enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE }; MonoMemoryContext codeContext = new MonoMemoryContext(_document, _address); location.unionmember1 = Marshal.GetComInterfaceForObject(codeContext, typeof(IDebugCodeContext2)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= (uint)enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } return(S_OK); }
public static BreakpointResolutionLocation FromNativeForm(BP_RESOLUTION_LOCATION location, bool releaseComObjects) { switch ((enum_BP_TYPE)location.bpType) { case enum_BP_TYPE.BPT_CODE: return(new BreakpointResolutionLocationCode(location, releaseComObjects)); case enum_BP_TYPE.BPT_DATA: return(new BreakpointResolutionLocationData(location, releaseComObjects)); case enum_BP_TYPE.BPT_NONE: case enum_BP_TYPE.BPT_SPECIAL: default: throw new NotSupportedException(); } }
public int GetResolutionInfo(enum_BPRESI_FIELDS fields, BP_RESOLUTION_INFO[] resolutionInfo) { if ((fields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { // The sample engine only supports code breakpoints. var location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)enum_BP_TYPE.BPT_CODE; // The debugger will not QI the IDebugCodeContex2 interface returned here. We must pass the pointer // to IDebugCodeContex2 and not IUnknown. MonoMemoryAddress codeContext = new MonoMemoryAddress(engine, address, documentContext); location.unionmember1 = Marshal.GetComInterfaceForObject(codeContext, typeof(IDebugCodeContext2)); resolutionInfo[0].bpResLocation = location; resolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } return(VSConstants.S_OK); }
int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { Debug.WriteLine("AD7Breakpoint: GetResolutionInfo"); AD7DocumentContext documentContext = new AD7DocumentContext(_node.FileName, ( int )_lineNumber, _beginPosition, _endPosition, this._node.Debugger.Debugger.CurrentScope); if (dwFields == enum_BPRESI_FIELDS.BPRESI_ALLFIELDS) { var loc = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE, unionmember1 = Marshal.GetComInterfaceForObject(documentContext, typeof(IDebugCodeContext2)) }; pBPResolutionInfo[0].bpResLocation = loc; pBPResolutionInfo[0].pProgram = _node; pBPResolutionInfo[0].pThread = _node; } return(VSConstants.S_OK); }
int IDebugBreakpointResolution2.GetResolutionInfo( enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)enum_BP_TYPE.BPT_CODE; location.unionmember1 = Marshal.GetComInterfaceForObject(CodeContext, typeof(IDebugCodeContext2)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } if ((dwFields & enum_BPRESI_FIELDS.BPRESI_PROGRAM) != 0) { pBPResolutionInfo[0].pProgram = Program as IDebugProgram2; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } return(VSConstants.S_OK); }
public int GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { //VS line\column is zero based. PowerShell is 1 var documentContext = new ScriptDocumentContext(File, Line - 1, Column, ""); Log.Debug("ScriptBreakpoint: GetResolutionInfo"); if (dwFields == enum_BPRESI_FIELDS.BPRESI_ALLFIELDS) { var loc = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE, unionmember1 = Marshal.GetComInterfaceForObject(documentContext, typeof(IDebugCodeContext2)) }; pBPResolutionInfo[0].bpResLocation = loc; pBPResolutionInfo[0].pProgram = _node; pBPResolutionInfo[0].pThread = _node; } return(VSConstants.S_OK); }
int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { if ((dwFields & enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION) != 0) { BP_RESOLUTION_LOCATION location = new BP_RESOLUTION_LOCATION(); location.bpType = (uint)enum_BP_TYPE.BPT_CODE; // the engine only supports code breakpoints // The debugger will not QI the IDebugCodeContex2 interface returned here. We must pass the pointer // to IDebugCodeContex2 and not IUnknown. location.unionmember1 = Marshal.GetComInterfaceForObject(_context, typeof(IDebugCodeContext2)); pBPResolutionInfo[0].bpResLocation = location; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_BPRESLOCATION; } if ((dwFields & enum_BPRESI_FIELDS.BPRESI_PROGRAM) != 0) { pBPResolutionInfo[0].pProgram = _program; pBPResolutionInfo[0].dwFields |= enum_BPRESI_FIELDS.BPRESI_PROGRAM; } return(VSConstants.S_OK); }
public BreakpointResolutionLocationCode(BP_RESOLUTION_LOCATION location, bool releaseComObjects) { if (location.bpType != (uint)enum_BP_TYPE.BPT_CODE) { throw new ArgumentException(); } try { if (location.unionmember1 != IntPtr.Zero) { _codeContext = Marshal.GetObjectForIUnknown(location.unionmember1) as IDebugCodeContext2; } } finally { if (releaseComObjects && location.unionmember1 != IntPtr.Zero) { Marshal.Release(location.unionmember1); } } }
public BreakpointResolutionLocationData(BP_RESOLUTION_LOCATION location, bool releaseComObjects) { if (location.bpType != (uint)enum_BP_TYPE.BPT_DATA) { throw new ArgumentException(); } if (location.unionmember1 != IntPtr.Zero) { _dataExpression = Marshal.PtrToStringBSTR(location.unionmember1); if (releaseComObjects) { Marshal.FreeBSTR(location.unionmember1); } } if (location.unionmember2 != IntPtr.Zero) { _function = Marshal.PtrToStringBSTR(location.unionmember2); if (releaseComObjects) { Marshal.FreeBSTR(location.unionmember2); } } if (location.unionmember3 != IntPtr.Zero) { _image = Marshal.PtrToStringBSTR(location.unionmember3); if (releaseComObjects) { Marshal.FreeBSTR(location.unionmember3); } } _flags = (enum_BP_RES_DATA_FLAGS)location.unionmember4; }
int IDebugBreakpointResolution2.GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { Debug.WriteLine("AD7Breakpoint: GetResolutionInfo"); AD7DocumentContext documentContext = new AD7DocumentContext(_node.FileName, ( int )_lineNumber, _beginPosition, _endPosition, this._node.Debugger.Debugger.CurrentScope ); if (dwFields == enum_BPRESI_FIELDS.BPRESI_ALLFIELDS) { var loc = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE, unionmember1 = Marshal.GetComInterfaceForObject(documentContext, typeof(IDebugCodeContext2)) }; pBPResolutionInfo[0].bpResLocation = loc; pBPResolutionInfo[0].pProgram = _node; pBPResolutionInfo[0].pThread = _node; } return VSConstants.S_OK; }
public int GetResolutionInfo(enum_BPRESI_FIELDS dwFields, BP_RESOLUTION_INFO[] pBPResolutionInfo) { //VS line\column is zero based. PowerShell is 1 var documentContext = new ScriptDocumentContext(File, Line - 1, Column, ""); Log.Debug("ScriptBreakpoint: GetResolutionInfo"); if (dwFields == enum_BPRESI_FIELDS.BPRESI_ALLFIELDS) { var loc = new BP_RESOLUTION_LOCATION { bpType = (uint)enum_BP_TYPE.BPT_CODE, unionmember1 = Marshal.GetComInterfaceForObject(documentContext, typeof(IDebugCodeContext2)) }; pBPResolutionInfo[0].bpResLocation = loc; pBPResolutionInfo[0].pProgram = _node; pBPResolutionInfo[0].pThread = _node; } return VSConstants.S_OK; }
public abstract void ToNativeForm(out BP_RESOLUTION_LOCATION location);