예제 #1
0
 DebugProgram(
     JoinableTaskContext taskContext,
     ThreadCreator threadCreator,
     DebugDisassemblyStream.Factory debugDisassemblyStreamFactory,
     DebugDocumentContext.Factory documentContextFactory,
     DebugCodeContext.Factory codeContextFactory,
     ThreadEnumFactory threadEnumFactory,
     ModuleEnumFactory moduleEnumFactory,
     CodeContextEnumFactory codeContextEnumFactory,
     IDebugEngineHandler debugEngineHandler,
     IDebugProcess2 process,
     Guid programId,
     SbProcess lldbProcess,
     RemoteTarget lldbTarget,
     IDebugModuleCache debugModuleCache,
     bool isCoreAttach)
 {
     _id                            = programId;
     _process                       = process;
     _lldbProcess                   = lldbProcess;
     _lldbTarget                    = lldbTarget;
     _threadCache                   = new Dictionary <uint, IDebugThread>();
     _isCoreAttach                  = isCoreAttach;
     _debugEngineHandler            = debugEngineHandler;
     _taskContext                   = taskContext;
     _threadCreator                 = threadCreator;
     _debugDisassemblyStreamFactory = debugDisassemblyStreamFactory;
     _documentContextFactory        = documentContextFactory;
     _codeContextFactory            = codeContextFactory;
     _threadEnumFactory             = threadEnumFactory;
     _moduleEnumFactory             = moduleEnumFactory;
     _codeContextEnumFactory        = codeContextEnumFactory;
     _debugModuleCache              = debugModuleCache;
 }
예제 #2
0
        protected BaseDebugStackFrame(DebugDocumentContext.Factory debugDocumentContextFactory,
                                      IChildrenProviderFactory childrenProviderFactory,
                                      DebugCodeContext.Factory debugCodeContextFactory,
                                      CreateDebugExpressionDelegate createExpressionDelegate,
                                      IVariableInformationFactory varInfoFactory,
                                      IVariableInformationEnumFactory varInfoEnumFactory,
                                      AD7FrameInfoCreator ad7FrameInfoCreator,
                                      IRegisterSetsBuilder registerSetsBuilder,
                                      IDebugEngineHandler debugEngineHandler, RemoteFrame frame,
                                      IDebugThread2 thread, IGgpDebugProgram debugProgram,
                                      ITaskExecutor taskExecutor)
        {
            this.debugDocumentContextFactory = debugDocumentContextFactory;
            this._childrenProviderFactory    = childrenProviderFactory;
            this.debugCodeContextFactory     = debugCodeContextFactory;
            this.createExpressionDelegate    = createExpressionDelegate;
            this.varInfoFactory      = varInfoFactory;
            this.varInfoEnumFactory  = varInfoEnumFactory;
            this.ad7FrameInfoCreator = ad7FrameInfoCreator;
            this.registerSetsBuilder = registerSetsBuilder;
            this.debugEngineHandler  = debugEngineHandler;
            this.debugProgram        = debugProgram;
            lldbFrame          = frame;
            this.thread        = thread;
            this._taskExecutor = taskExecutor;

            documentContext = new Lazy <IDebugDocumentContext2>(() => CreateDocumentContext());
            codeContext     = new Lazy <IDebugCodeContext2>(() => CreateCodeContext());
        }
예제 #3
0
 public Factory(DebugDocumentContext.Factory documentContextFactory,
                DebugCodeContext.Factory codeContextFactory,
                DebugBreakpointResolution.Factory breakpointResolutionFactory)
 {
     _documentContextFactory      = documentContextFactory;
     _codeContextFactory          = codeContextFactory;
     _breakpointResolutionFactory = breakpointResolutionFactory;
 }
예제 #4
0
 public Factory(JoinableTaskContext taskContext,
                DebugDisassemblyStream.Factory debugDisassemblyStreamFactory,
                DebugDocumentContext.Factory documentContextFactory,
                DebugCodeContext.Factory codeContextFactory,
                ThreadEnumFactory threadsEnumFactory,
                ModuleEnumFactory moduleEnumFactory,
                CodeContextEnumFactory codeContextEnumFactory)
 {
     _taskContext = taskContext;
     _debugDisassemblyStreamFactory = debugDisassemblyStreamFactory;
     _documentContextFactory        = documentContextFactory;
     _codeContextFactory            = codeContextFactory;
     _threadsEnumFactory            = threadsEnumFactory;
     _moduleEnumFactory             = moduleEnumFactory;
     _codeContextEnumFactory        = codeContextEnumFactory;
 }
        DebugDisassemblyStream(DebugCodeContext.Factory codeContextFactory,
                               DebugDocumentContext.Factory documentContextFactory,
                               enum_DISASSEMBLY_STREAM_SCOPE scope, IDebugCodeContext2 codeContext,
                               RemoteTarget target)
        {
            _codeContextFactory     = codeContextFactory;
            _documentContextFactory = documentContextFactory;
            _scope  = scope;
            _target = target;

            // Used to cache line entries from the last read call
            _lineEntryCache = new Dictionary <ulong, LineEntryInfo>();

            // Extract the address from {codeContext}.
            _address = codeContext.GetAddress();
        }
예제 #6
0
 public Factory(DebugDocumentContext.Factory debugDocumentContextFactory,
                IChildrenProviderFactory childrenProviderFactory,
                DebugCodeContext.Factory debugCodeContextFactory,
                CreateDebugExpressionDelegate createExpressionDelegate,
                IVariableInformationFactory varInfoFactory,
                IVariableInformationEnumFactory varInfoEnumFactory,
                RegisterSetsBuilder.Factory registerSetsBuilderFactory,
                ITaskExecutor taskExecutor)
 {
     this.debugDocumentContextFactory = debugDocumentContextFactory;
     this.childrenProviderFactory     = childrenProviderFactory;
     this.debugCodeContextFactory     = debugCodeContextFactory;
     this.createExpressionDelegate    = createExpressionDelegate;
     this.varInfoFactory             = varInfoFactory;
     this.varInfoEnumFactory         = varInfoEnumFactory;
     this.registerSetsBuilderFactory = registerSetsBuilderFactory;
     this.taskExecutor = taskExecutor;
 }
예제 #7
0
 DebugStackFrameAsync(DebugDocumentContext.Factory debugDocumentContextFactory,
                      IChildrenProviderFactory childrenProviderFactory,
                      DebugCodeContext.Factory debugCodeContextFactory,
                      CreateDebugExpressionDelegate createExpressionDelegate,
                      IVariableInformationFactory varInfoFactory,
                      IVariableInformationEnumFactory varInfoEnumFactory,
                      AD7FrameInfoCreator ad7FrameInfoCreator,
                      IRegisterSetsBuilder registerSetsBuilder,
                      IDebugEngineHandler debugEngineHandler, RemoteFrame frame,
                      IDebugThread2 thread, IGgpDebugProgram debugProgram,
                      ITaskExecutor taskExecutor) : base(debugDocumentContextFactory,
                                                         childrenProviderFactory,
                                                         debugCodeContextFactory,
                                                         createExpressionDelegate,
                                                         varInfoFactory, varInfoEnumFactory,
                                                         ad7FrameInfoCreator,
                                                         registerSetsBuilder,
                                                         debugEngineHandler, frame, thread,
                                                         debugProgram, taskExecutor)
 {
 }
예제 #8
0
        // Constructor with factories for tests.
        DebugBoundBreakpoint(DebugDocumentContext.Factory documentContextFactory,
                             DebugCodeContext.Factory codeContextFactory,
                             DebugBreakpointResolution.Factory breakpointResolutionFactory,
                             IDebugPendingBreakpoint2 pendingBreakpoint,
                             SbBreakpointLocation breakpointLocation, IDebugProgram2 program,
                             Guid languageGuid)
        {
            _pendingBreakpoint  = pendingBreakpoint;
            _breakpointLocation = breakpointLocation;

            _enabled             = true;
            _deleted             = false;
            _disabledByPassCount = false;

            SbAddress address = breakpointLocation.GetAddress();

            if (address != null)
            {
                LineEntryInfo          lineEntry       = address.GetLineEntry();
                IDebugDocumentContext2 documentContext = null;
                string name = "";

                // |lineEntry| is null if the breakpoint is set on an external function.
                if (lineEntry != null)
                {
                    documentContext = documentContextFactory.Create(lineEntry);
                    documentContext.GetName(enum_GETNAME_TYPE.GN_NAME, out name);
                }
                IDebugCodeContext2 codeContext = codeContextFactory.Create(
                    breakpointLocation.GetLoadAddress(), name, documentContext, languageGuid);
                _breakpointResolution = breakpointResolutionFactory.Create(codeContext, program);
            }
            else
            {
                Trace.WriteLine("Warning: Unable to obtain address from breakpoint location." +
                                " No breakpoint resolution created.");
            }
        }
 public Factory(DebugCodeContext.Factory codeContextFactory,
                DebugDocumentContext.Factory documentContextFactory)
 {
     _codeContextFactory     = codeContextFactory;
     _documentContextFactory = documentContextFactory;
 }