@Nullable private Project getProject() { XDebugSession session = getSession(); return session != null ? session.getProject() : null; }
Project project = getSession().getProject();
@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 VirtualFile findFile() { String fileName = myFrame.getFileName(); Project project = myProcess.getSession().getProject(); String projectBasePath = project.getBaseDir().getPath();
@Nullable private XSourcePosition findPosition() { XDebugSession debugSession = myProcess.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 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; }
@Override protected void processBreakPoint(@NotNull XLineBreakpoint breakpoint, XDebugSession session) { XDebuggerManager.getInstance(session.getProject()).getBreakpointManager().updateBreakpointPresentation( breakpoint, AllIcons.Debugger.Db_invalid_breakpoint, "You can't set a breakpoint here" ); } }
@Override protected void processBreakPoint(@NotNull XLineBreakpoint breakpoint, XDebugSession session) { XDebuggerManager.getInstance(session.getProject()).getBreakpointManager().updateBreakpointPresentation( breakpoint, AllIcons.Debugger.Db_verified_breakpoint, "Breakpoint set" ); } }
public PerlDebugThread(XDebugSession session, PerlDebugProfileStateBase state, ExecutionResult executionResult) { super("PerlDebugThread"); mySession = session; myGson = createGson(); myDebugProfileState = state; myExecutionResult = executionResult; myScriptListPanel = new PerlScriptsPanel(session.getProject(), this); myEvalsListPanel = new PerlScriptsPanel(session.getProject(), this); myPerlRemoteFileSystem.dropFiles(); myPerlDebugOptions = state.getDebugOptions(); }
/** Initializes the handler. */ public CloudBreakpointHandler( @NotNull CloudDebugProcess process, ServerToIdeFileResolver fileResolver) { super(CloudLineBreakpointType.class); this.process = process; setPsiManager(PsiManager.getInstance(this.process.getXDebugSession().getProject())); this.fileResolver = fileResolver; }
@Override public void run() { XDebugSession session = getDebugSession(); XLineBreakpoint breakpoint = PerlDebugUtil.findBreakpoint(session.getProject(), this); if (breakpoint != null) { processBreakPoint(breakpoint, session); } }
@NotNull private CloudDebugProcess mockCloudDebugProcess( XBreakpointManager breakpointManager, XDebugSession debugSession) { Project project = mock(Project.class); when(debugSession.getProject()).thenReturn(project); XDebuggerManager debuggerManager = mock(XDebuggerManager.class); when(project.getComponent(XDebuggerManager.class)).thenReturn(debuggerManager); when(debuggerManager.getBreakpointManager()).thenReturn(breakpointManager); return spy(new CloudDebugProcess(debugSession)); }
private void init(XDebugSession session, String execName) { Project project = session.getProject(); m_project = project; debugSession = session; // Prepare GDB m_gdb = new Gdb(ToolKey.GDB_KEY.getPath(), project.getBasePath(), this); // Create the GDB console m_gdbConsole = new GdbConsoleView(m_gdb, session.getProject()); m_gdbRawConsole = new ConsoleViewImpl(session.getProject(), true); m_gdbConsole.getConsole().print(m_timeFormat.format(new Date()) + " 0> " + ToolKey.GDB_KEY.getPath() + " --interpreter=mi2\n", ConsoleViewContentType.USER_INPUT); m_gdb.sendCommand("-file-exec-and-symbols " + execName); boolean isWsl = SdkUtil.isWslPath(execName); // Create the breakpoint handler m_breakpointHandler = new GdbBreakpointHandler(m_gdb, this, isWsl); // Launch the process m_gdb.start(); }
@Override public void mousePressed(MouseEvent event) { JTable table = (JTable) event.getSource(); Point point = event.getPoint(); Breakpoint breakpoint = getBreakPoint(point); int column = table.columnAtPoint(point); // todo: 4 and 1 here are magic numbers; use named constants for columns; maybe define // in CloudDebuggerTable class if (breakpoint != null && column == 4 && supportsMoreConfig(breakpoint)) { BreakpointsDialogFactory.getInstance(process.getXDebugSession().getProject()) .showDialog(process.getBreakpointHandler().getXBreakpoint(breakpoint)); } else if (event.getClickCount() == 1 && breakpoint != null && table.getSelectedRows().length == 1) { selectSnapshot(breakpoint, false); } } }
/** * Called when the user clicks a pending breakpoint. We find the local IDE representation and * navigate to its line of code. */ public void navigateTo(@NotNull Breakpoint serverBreakpoint) { final XBreakpoint xIdeBreakpoint = ideBreakpoints.get(serverBreakpoint.getId()); if (xIdeBreakpoint != null && xIdeBreakpoint.getSourcePosition() != null && process.getXDebugSession() != null) { xIdeBreakpoint .getSourcePosition() .createNavigatable(process.getXDebugSession().getProject()) .navigate(true); } }
@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(); } }
@Before public void setUp() throws Exception { ThreadTracker.longRunningThreadCreated( ApplicationManager.getApplication(), CloudDebugProcessStateController.LIST_BREAKPOINTS_TIMER_NAME); XDebugSession session = mock(XDebugSession.class); when(session.getProject()).thenReturn(testFixture.getProject()); process = spy(new CloudDebugProcess(session)); }
void updateBreakpointPresentation(CloudLineBreakpoint cloudLineBreakpoint) { final XBreakpointManager manager = getXBreakpointManager(getXDebugSession().getProject()); manager.updateBreakpointPresentation( getXBreakpoint(cloudLineBreakpoint), cloudLineBreakpoint.getSetIcon(areBreakpointsMuted()), cloudLineBreakpoint.getErrorMessage()); }
@Override public void stop() { myDebugThread.setStop(); ApplicationManager.getApplication().runReadAction( () -> { XBreakpointManager breakpointManager = XDebuggerManager.getInstance(getSession().getProject()).getBreakpointManager(); Collection<? extends XLineBreakpoint<PerlLineBreakpointProperties>> breakpoints = breakpointManager.getBreakpoints(PerlLineBreakpointType.class); for (XLineBreakpoint<PerlLineBreakpointProperties> breakpoint : breakpoints) { breakpointManager.updateBreakpointPresentation(breakpoint, null, null); } } ); }
@Override public void stop() { getStateController().stopBackgroundListening(); RunProfile profile = getXDebugSession().getRunProfile(); if (profile instanceof CloudDebugRunConfiguration) { ((CloudDebugRunConfiguration) profile).setProcessState(processState); } getRepositoryValidator().restoreToOriginalState(getXDebugSession().getProject()); XBreakpointManager breakpointManager = XDebuggerManager.getInstance(getXDebugSession().getProject()).getBreakpointManager(); for (XBreakpoint bp : breakpointManager.getAllBreakpoints()) { com.intellij.debugger.ui.breakpoints.Breakpoint cloudBreakpoint = BreakpointManager.getJavaBreakpoint(bp); if (!(cloudBreakpoint instanceof CloudLineBreakpointType.CloudLineBreakpoint)) { continue; } CloudLineBreakpointType.CloudLineBreakpoint cloudLineBreakpoint = (CloudLineBreakpointType.CloudLineBreakpoint) cloudBreakpoint; cloudLineBreakpoint.setVerified(false); cloudLineBreakpoint.setErrorMessage(null); updateBreakpointPresentation(cloudLineBreakpoint); } }