Java 类org.eclipse.debug.core.model.RuntimeProcess 实例源码
项目:visuflow-plugin
文件:TerminationListener.java
@Override
public void handleDebugEvents(DebugEvent[] events) {
for (int i = 0; i < events.length; i++) {
DebugEvent debugEvent = events[i];
if (debugEvent.getKind() == DebugEvent.TERMINATE) {
// this event is fired for each thread and stuff, but we only want to remove our breakpoints,
// when the JVM process terminates
if (debugEvent.getSource() instanceof RuntimeProcess) {
// remove this debug event listener to release it for garbage collection
DebugPlugin.getDefault().removeDebugEventListener(this);
// remove temporary jimple breakpoints
try {
JimpleBreakpointManager.getInstance().removeTemporaryBreakpoints();
} catch (CoreException e) {
logger.error("Couldn't delete temporary jimple breakpoints after termination", e);
}
// stop the monitoring server
monitoringServer.stop();
// delete the agent jar
if (agentJar != null && agentJar.exists()) {
agentJar.delete();
}
// remove the jimple instruction pointer marker (green debug line highlighting)
removeJimpleInstructionPointerMarker();
}
}
}
}
项目:connectiq-monkeyc
文件:PCMatcher.java
public void connect(TextConsole console) {
try {
/*
* Now we have to go digging for the Connect IQ project.
*
* It seems to be rather difficult to find, and we do with the debug
* info file.
*/
Object consoleProcessObj = console
.getAttribute("org.eclipse.debug.ui.ATTR_CONSOLE_PROCESS");
if (!(consoleProcessObj instanceof RuntimeProcess))
return;
RuntimeProcess rp = (RuntimeProcess) consoleProcessObj;
ILaunch launch = rp.getLaunch();
if (launch == null)
return;
ILaunchConfiguration launchConf = launch.getLaunchConfiguration();
if (launchConf == null)
return;
String debugInfoFile = launchConf.getAttribute(
"connectiq.debugInfo", (String) null);
if (debugInfoFile == null)
return;
myDebugInfo = DebugInfoManager.getDebugInfo(debugInfoFile);
myGlobalDebugInfo = getGlobalDebugInfo();
myConsole = console;
} catch (CoreException e) {
}
}
项目:pandionj
文件:PandionJView.java
public void handleDebugEvents(DebugEvent[] events) {
if(events.length > 0 && runtime != null && !runtime.isTerminated()) {
DebugEvent e = events[0];
PandionJUI.executeUpdate(() -> {
if(e.getKind() == DebugEvent.SUSPEND && e.getDetail() == DebugEvent.STEP_END && exception == null) {
IJavaThread thread = (IJavaThread) e.getSource();
IStackFrame f = thread.getTopStackFrame();
if(f == null)
return;
ISourceLocator sourceLocator = f.getLaunch().getSourceLocator();
Object sourceElement = sourceLocator == null ? null : sourceLocator.getSourceElement(f);
if(sourceElement != null) {
if(sourceElement instanceof IFile)
handleFrames(thread);
else
thread.stepReturn();
if(f != null && f.getLineNumber() == -1)
thread.resume(); // to jump over injected code
}
else {
thread.stepReturn();
}
// Job job = Job.create("Update table", (ICoreRunnable) monitor -> {
// System.out.println("STEP");
// thread.stepInto();
// });
// job.schedule(3000);
}
else if(e.getKind() == DebugEvent.CHANGE && e.getDetail() == DebugEvent.CONTENT) {
runtime = new RuntimeModel();
runtimeView.setInput(runtime);
}
else if(e.getKind() == DebugEvent.TERMINATE && e.getSource() instanceof RuntimeProcess) {
runtime.setTerminated();
}
});
}
}
项目:Pydev
文件:PyProcessFactory.java
@Override
public IProcess newProcess(ILaunch launch, Process process, String label, Map attributes) {
return new RuntimeProcess(launch, new ProcessWrapper(process), label, attributes);
}