@Nullable private Project getProject() { XDebugSession session = getSession(); return session != null ? session.getProject() : null; }
return process; }).getRunContentDescriptor();
XSuspendContext context = getSession().getSuspendContext(); if (context == null) { context = new BallerinaSuspendContext(BallerinaDebugProcess.this, message); session.positionReached(context); } else { session.breakpointReached(breakpoint, null, context); XDebugSession session = getSession(); if (session != null) { session.sessionResumed(); session.stop(); getSession().getConsoleView().print("Remote debugging finished.\n", ConsoleViewContentType.SYSTEM_OUTPUT);
@Nullable private XSourcePosition findPosition() { XDebugSession debugSession = getSession(); if (debugSession == null) return null; XStackFrame stackFrame = debugSession.getCurrentStackFrame(); if (stackFrame == null) return null; Project project = debugSession.getProject(); XSourcePosition position = debugSession.getCurrentPosition(); Editor editor = ((FileEditorManagerImpl)FileEditorManager.getInstance(project)).getSelectedTextEditor(true); if (editor == null || position == null) return null; String name = myName.startsWith("&") ? myName.replaceFirst("\\&", "") : myName; PsiElement resolved = findTargetElement(project, position, editor, name); if (resolved == null) return null; VirtualFile virtualFile = resolved.getContainingFile().getVirtualFile(); return XDebuggerUtil.getInstance().createPositionByOffset(virtualFile, resolved.getTextOffset()); } });
@Nullable private String getWorkerID(@Nullable XSuspendContext context) { if (context != null) { XExecutionStack activeExecutionStack = context.getActiveExecutionStack(); if (activeExecutionStack instanceof BallerinaSuspendContext.BallerinaExecutionStack) { return ((BallerinaSuspendContext.BallerinaExecutionStack) activeExecutionStack).getMyWorkerID(); } } getSession().getConsoleView().print("Error occurred while getting the thread ID.", ConsoleViewContentType.ERROR_OUTPUT); getSession().stop(); return null; }
@Override public void consume(@NotNull DebuggerState o) { if (o.exited) { stop(); return; } XBreakpoint<DlvBreakpointProperties> find = findBreak(o.breakPoint); send(new DlvRequest.StacktraceGoroutine()).done(locations -> { DlvSuspendContext context = new DlvSuspendContext(DlvDebugProcess.this, o.currentThread.id, locations, getProcessor()); XDebugSession session = getSession(); if (find == null) { session.positionReached(context); } else { session.breakpointReached(find, null, context); } }); }
boolean suspendProcess = getSession().breakpointReached(breakpoint, null, suspendContext); if (!suspendProcess) { getSession().resume(); getSession().positionReached(suspendContext); (stoppedEvent.reason.equals(GdbStoppedEvent.Reason.ExitedNormally) || stoppedEvent.reason.equals(GdbStoppedEvent.Reason.ExitedSignalled))) { debugSession.stop(); stoppedEvent.allStopped == null && stoppedEvent.stoppedThreads == null) { debugSession.stop();
private void navigateToBreakpoint(@NotNull Breakpoint target) { Date snapshotTime; try { if (target.getFinalTime() == null) { LOG.warn("Could not resolve final time from breakpoint."); snapshotTime = new Date(); } else { snapshotTime = ISODateTimeFormat.dateTime().parseDateTime(target.getFinalTime()).toDate(); } } catch (IllegalArgumentException iae) { LOG.warn("Could not parse breakpoint timestamp using ISO8601."); snapshotTime = new Date(); } DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); currentSnapshot = target; if (!getXDebugSession().isStopped()) { getXDebugSession() .positionReached( new MySuspendContext( new CloudExecutionStack( getXDebugSession().getProject(), StackdriverDebuggerBundle.getString( "clouddebug.stackat", df.format(snapshotTime)), target.getStackFrames(), target.getVariableTable(), target.getEvaluatedExpressions()))); } }
@Nullable private VirtualFile findFile() { String url = myLocation.file; VirtualFile file = LocalFileSystem.getInstance().findFileByPath(url); if (file == null && SystemInfo.isWindows) { Project project = myProcess.getSession().getProject(); RunProfile profile = myProcess.getSession().getRunProfile(); Module module = profile instanceof ModuleBasedConfiguration ? ((ModuleBasedConfiguration)profile).getConfigurationModule().getModule() : null; String sdkHomePath = GoSdkService.getInstance(project).getSdkHomePath(module); if (sdkHomePath == null) return null; String newUrl = StringUtil.replaceIgnoreCase(url, "c:/go", sdkHomePath); return LocalFileSystem.getInstance().findFileByPath(newUrl); } return file; }
void sendBreakpoints() { StringBuilder stringBuilder = new StringBuilder("{\"command\":\"").append(Command.SET_POINTS) .append("\", \"points\": ["); if (!getSession().areBreakpointsMuted()) { ApplicationManager.getApplication().runReadAction(() -> { int size = breakpoints.size(); Project project = getSession().getProject();
RunnerLayoutUi ui = debugSession.getUI(); if (ui instanceof DataProvider) { final RunnerContentUi contentUi = (RunnerContentUi) ((DataProvider) ui).getData(RunnerContentUi.KEY.getName()); final Project project = debugSession.getProject(); return debugSession.getRunContentDescriptor();
@Override public void run() { XDebugSession session = getDebugSession(); XLineBreakpoint breakpoint = PerlDebugUtil.findBreakpoint(session.getProject(), this); if (breakpoint != null) { session.breakpointReached(breakpoint, logmessage, getSuspendContext()); } if (suspend) { super.run(); } }
@VisibleForTesting boolean notStoppedAndHasRunProfile(XDebugSession session) { return !session.isStopped() && session.getRunProfile() != null; }
@Override public void run() { if (!getXDebugSession().isStopped()) { // Since there is no equivalent metaphor in traditional debug sessions, this simulates // the desired behavior of clearing the current context by setting the current // position // to an empty context getXDebugSession().positionReached(new XSuspendContext() {}); } } });
GdbDebugProcess debugProcess = ((GdbDebugProcess) debugSession.getDebugProcess()); return debugSession.getRunContentDescriptor();
@Override public void stop() { // If we don't call this using the executeOnPooledThread(), the UI will hang until the debug server is stopped. ApplicationManager.getApplication().executeOnPooledThread(() -> { XDebugSession session = getSession(); if (!isRemoteDebugMode) { XSuspendContext suspendContext = session.getSuspendContext(); if (suspendContext != null) { XExecutionStack activeExecutionStack = suspendContext.getActiveExecutionStack(); if (activeExecutionStack instanceof BallerinaSuspendContext.BallerinaExecutionStack) { String workerID = ((BallerinaSuspendContext.BallerinaExecutionStack) activeExecutionStack) .getMyWorkerID(); if (workerID != null) { myConnector.sendCommand(Command.STOP, workerID); } } } else { session.stop(); return; } } else { myConnector.sendCommand(Command.STOP); session.stop(); getSession().getConsoleView().print("Disconnected from the debug server.\n", ConsoleViewContentType.SYSTEM_OUTPUT); } isDisconnected = true; myConnector.close(); }); }
@Override public void registerBreakpoint(@NotNull XLineBreakpoint<BallerinaBreakpointProperties> breakpoint) { XSourcePosition breakpointPosition = breakpoint.getSourcePosition(); if (breakpointPosition == null) { return; } breakpoints.add(breakpoint); sendBreakpoints(); getSession().updateBreakpointPresentation(breakpoint, AllIcons.Debugger.Db_verified_breakpoint, null); }
@Override public void run() { getDebugSession().positionReached(getSuspendContext()); } }
private boolean areBreakpointsMuted() { return getXDebugSession() != null && getXDebugSession().areBreakpointsMuted(); }
@Override public void stop() { if (getVm() != null) { send(new DlvRequest.Detach(true)); } getSession().stop(); }