public void StopWhenLldbShellIsNull()
        {
            _lldbShell = null;
            _attachedProgram.Stop();

            Received.InOrder(() => { _eventManager.StopListener(); });
        }
        public void SetUp()
        {
            _lldbShell         = Substitute.For <ILLDBShell>();
            _breakpointManager = Substitute.For <IBreakpointManager>();
            _moduleFileLoader  = Substitute.For <IModuleFileLoader>();

            _debugger           = Substitute.For <SbDebugger>();
            _target             = Substitute.For <RemoteTarget>();
            _listenerSubscriber = Substitute.For <ILldbListenerSubscriber>();
            _process            = Substitute.For <SbProcess>();

            _debugEngineHandler = Substitute.For <IDebugEngineHandler>();
            _taskExecutor       = Substitute.For <ITaskExecutor>();
            _eventManager       = Substitute.For <IEventManager>();

            var exceptionManagerFactory =
                new LldbExceptionManager.Factory(new Dictionary <int, YetiCommon.Signal>());
            var exceptionManager = exceptionManagerFactory.Create(_process);

            _debugModuleCache = Substitute.For <IDebugModuleCache>();
            _debugProgram     = Substitute.For <IGgpDebugProgram>();

            _attachedProgram = new LldbAttachedProgram(
                _breakpointManager, _eventManager, _lldbShell, _moduleFileLoader,
                _debugEngineHandler, _taskExecutor, _debugProgram, _debugger, _target, _process,
                exceptionManager, _debugModuleCache, _listenerSubscriber, _remotePid);
        }
        public void ContinueInBreakModeWhenLldbShellIsNull()
        {
            _lldbShell = null;

            var selectedThread = Substitute.For <RemoteThread>();

            _process.GetSelectedThread().Returns(selectedThread);

            _attachedProgram.ContinueInBreakMode();

            Predicate <DebugEvent> matchExceptionEvent = e =>
            {
                ExceptionEvent exceptionEvent = e as ExceptionEvent;
                if (exceptionEvent == null)
                {
                    return(false);
                }

                var info = new EXCEPTION_INFO[1];
                exceptionEvent.GetException(info);
                return(info[0].dwState == enum_EXCEPTION_STATE.EXCEPTION_NONE);
            };

            Received.InOrder(() => {
                _debugEngineHandler.SendEvent(Arg.Is <DebugEvent>(e => matchExceptionEvent(e)),
                                              _debugProgram,selectedThread);
            });
        }
        public void SetUp()
        {
            logSpy = new LogSpy();
            logSpy.Attach();

            var taskContext = new JoinableTaskContext();

            shellMock = Substitute.For <ILLDBShell>();

            commandWindowText = "";

            commandWindowMock = Substitute.For <IVsCommandWindow>();
            commandWindowMock.Print(Arg.Do <string>(x => commandWindowText += x));

            serviceProviderMock = Substitute.For <IServiceProvider>();

            yetiOptions = Substitute.For <OptionPageGrid>();
            var yetiService = new YetiVSIService(yetiOptions);

            serviceProviderMock.GetService(typeof(YetiVSIService)).Returns(yetiService);
            serviceProviderMock.GetService(typeof(SLLDBShell)).Returns(shellMock);
            serviceProviderMock.GetService(typeof(SVsCommandWindow)).Returns(commandWindowMock);

            menuCommandService = new OleMenuCommandService(serviceProviderMock);
            serviceProviderMock.GetService(typeof(IMenuCommandService)).Returns(menuCommandService);

            LLDBShellCommandTarget.Register(taskContext, serviceProviderMock);
        }
 public Factory(JoinableTaskContext taskContext,
                IDebugEngineHandlerFactory debugEngineHandlerFactory,
                ITaskExecutor taskExecutor, LldbEventManager.Factory eventManagerFactory,
                IDebugProgramFactory debugProgramFactory,
                DebugModuleCache.Factory debugModuleCacheFactory,
                DebugModule.Factory debugModuleFactory,
                CreateDebugThreadDelegate debugThreadCreatorDelegate,
                CreateDebugStackFrameDelegate debugStackFrameCreator,
                ILLDBShell lldbShell,
                LldbBreakpointManager.Factory breakpointManagerFactory,
                SymbolLoader.Factory symbolLoaderFactory,
                BinaryLoader.Factory binaryLoaderFactory,
                IModuleFileLoaderFactory moduleFileLoaderFactory)
 {
     _taskContext = taskContext;
     _debugEngineHandlerFactory = debugEngineHandlerFactory;
     _taskExecutor               = taskExecutor;
     _eventManagerFactory        = eventManagerFactory;
     _debugProgramFactory        = debugProgramFactory;
     _debugModuleCacheFactory    = debugModuleCacheFactory;
     _debugModuleFactory         = debugModuleFactory;
     _debugThreadCreatorDelegate = debugThreadCreatorDelegate;
     _debugStackFrameCreator     = debugStackFrameCreator;
     _breakpointManagerFactory   = breakpointManagerFactory;
     _lldbShell               = lldbShell;
     _symbolLoaderFactory     = symbolLoaderFactory;
     _binaryLoaderFactory     = binaryLoaderFactory;
     _moduleFileLoaderFactory = moduleFileLoaderFactory;
 }
 public void ContinueFromSuspendedWhenLldbShellIsNull()
 {
     _lldbShell = null;
     _attachedProgram.ContinueFromSuspended();
     Received.InOrder(() => {
         _eventManager.StartListener();
         _process.Continue();
         _debugProgram.Received().EnumModules(out _);
     });
 }
 public LldbAttachedProgram(IBreakpointManager breakpointManager, IEventManager eventManager,
                            ILLDBShell lldbShell, IModuleFileLoader moduleFileLoader,
                            IDebugEngineHandler debugEngineHandler,
                            ITaskExecutor taskExecutor, IGgpDebugProgram debugProgram,
                            SbDebugger debugger, RemoteTarget target, SbProcess process,
                            IExceptionManager exceptionManager,
                            IDebugModuleCache debugModuleCache,
                            ILldbListenerSubscriber listenerSubscriber, uint remotePid)
 {
     _debugProgram       = debugProgram;
     _breakpointManager  = breakpointManager;
     _eventManager       = eventManager;
     _lldbShell          = lldbShell;
     _moduleFileLoader   = moduleFileLoader;
     _debugEngineHandler = debugEngineHandler;
     _taskExecutor       = taskExecutor;
     _debugger           = debugger;
     _target             = target;
     _process            = process;
     _exceptionManager   = exceptionManager;
     _debugModuleCache   = debugModuleCache;
     _listenerSubscriber = listenerSubscriber;
     RemotePid           = remotePid;
 }