From: Jan P. <jp...@us...> - 2007-05-27 14:30:50
|
Update of /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/remote In directory sc8-pr-cvs17:/tmp/cvs-serv17222/src/org/epic/debug/remote Modified Files: RemoteDebugTarget.java RemoteLaunchConfigurationDelegate.java CreateRemotePackageJob.java Log Message: - Removed PerlDB, made PerlDebugThread the central class - Redesigned DebuggerInterface to only support synchronous communication with the debugger, made PerlDebugThread responsible for issuing asynchronous commands - Hopefully fixed bug [ 1705011 ] CGI,no breakpoints,100% cpu perl.exe zombies,ignore use lib through introduction of epic_breakpoints.pm to deal with ambiguous paths Index: CreateRemotePackageJob.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/remote/CreateRemotePackageJob.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CreateRemotePackageJob.java 28 Feb 2007 20:36:02 -0000 1.3 +++ CreateRemotePackageJob.java 27 May 2007 14:30:34 -0000 1.4 @@ -52,6 +52,7 @@ { addProjectFilesToArchive(monitor); addHelperScriptToArchive("dumpvar_epic.pm"); + addHelperScriptToArchive("epic_breakpoints.pm"); addHelperScriptToArchive("autoflush_epic.pm"); addStartScriptToArchive(); Index: RemoteLaunchConfigurationDelegate.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/remote/RemoteLaunchConfigurationDelegate.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- RemoteLaunchConfigurationDelegate.java 12 Dec 2006 20:47:43 -0000 1.2 +++ RemoteLaunchConfigurationDelegate.java 27 May 2007 14:30:34 -0000 1.3 @@ -8,6 +8,7 @@ import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.epic.debug.*; +import org.epic.debug.db.PerlDebugThread; import org.epic.debug.util.*; /** @@ -72,8 +73,8 @@ launch, process, debugPort, mapper); launch.addDebugTarget(target); - if (!target.getDebugger().isTerminated()) - process.init(target.getDebugger()); + if (!target.isTerminated()) + process.init((PerlDebugThread) target.getThreads()[0]); else launch.terminate(); } Index: RemoteDebugTarget.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/remote/RemoteDebugTarget.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- RemoteDebugTarget.java 12 Dec 2006 20:47:43 -0000 1.2 +++ RemoteDebugTarget.java 27 May 2007 14:30:34 -0000 1.3 @@ -1,13 +1,37 @@ package org.epic.debug.remote; +import java.io.IOException; + import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.core.ILaunch; -import org.epic.debug.DebugTarget; +import org.eclipse.debug.core.*; +import org.epic.debug.*; +import org.epic.debug.db.DebuggerInterface; import org.epic.debug.util.*; class RemoteDebugTarget extends DebugTarget { + private final IDebugEventSetListener listener = new IDebugEventSetListener() { + public void handleDebugEvents(DebugEvent[] events) + { + for (int i = 0; i < events.length; i++) + { + try + { + if (events[i].getKind() == DebugEvent.TERMINATE && + getThreads()[0].equals(events[i].getSource())) + { + DebugPlugin.getDefault().removeDebugEventListener(this); + shutdown(); // we're done when our thread is + return; + } + } + catch (DebugException e) + { + PerlDebugPlugin.log(e); + } + } + } }; + public RemoteDebugTarget( ILaunch launch, DebuggerProxy process, @@ -16,14 +40,32 @@ throws CoreException { super(launch, process, debugPort, pathMapper); + DebugPlugin.getDefault().addDebugEventListener(listener); } - protected void initDebugger() throws DebugException + protected DebuggerInterface initDebuggerInterface(DebuggerInterface db) + throws DebugException { - getDebugger().init( - getProxy().getIOHost(), - getProxy().getIOPort(), - getProxy().getErrorPort()); + boolean shouldRedirectIO = true; + try + { + shouldRedirectIO = getLaunch().getLaunchConfiguration().getAttribute( + PerlLaunchConfigurationConstants.ATTR_REMOTE_CAPTURE_OUTPUT, + true); + } + catch (CoreException e) { /* should never occur */ } + + if (getProxy().getIOHost() != null && shouldRedirectIO) + { + try + { + db.redirectIO(getProxy().getIOHost(), getProxy().getIOPort()); + db.redirectError(getProxy().getIOHost(), getProxy().getErrorPort()); + } + catch (IOException e) { throwDebugException(e); } + } + + return super.initDebuggerInterface(db); } private DebuggerProxy getProxy() |