X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGProxy.java b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGProxy.java index caec4dd..2926870 100644 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGProxy.java +++ b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGProxy.java @@ -17,11 +17,11 @@ import java.net.SocketTimeoutException; import java.util.Map; import net.sourceforge.phpdt.internal.debug.core.breakpoints.PHPLineBreakpoint; -import net.sourceforge.phpdt.internal.debug.core.logview.LogView; import net.sourceforge.phpdt.internal.debug.core.model.IPHPDebugTarget; import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame; import net.sourceforge.phpdt.internal.debug.core.model.PHPThread; import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable; +import net.sourceforge.phpeclipse.PHPeclipsePlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -29,8 +29,6 @@ import org.eclipse.core.runtime.Path; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.model.IBreakpoint; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IWorkbenchPage; public class PHPDBGProxy { @@ -144,45 +142,42 @@ public class PHPDBGProxy { } protected void setBreakPoints() throws IOException, CoreException { - IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(); - for (int i = 0; i < breakpoints.length; i++) { - addBreakpoint(breakpoints[i]); - } - } + IBreakpoint[] breakpoints = DebugPlugin.getDefault() + .getBreakpointManager().getBreakpoints(); + for (int i = 0; i < breakpoints.length; i++) { + if (breakpoints[i].isEnabled()) { + addBreakpoint(breakpoints[i]); + } + } + } - private String MapPath(PHPLineBreakpoint phpLBP) - { - IPath filename; - if (remote) - { - filename = phpLBP.getMarker().getResource().getProjectRelativePath(); - filename = remoteSourcePath.append(filename); - } - else - filename = phpLBP.getMarker().getResource().getLocation(); - String path=filename.toOSString(); - if(pathmap!=null) - { - java.util.Iterator i=pathmap.keySet().iterator(); - while(i.hasNext()) - { - String k=(String)i.next(); - if(path.substring(0,k.length()).equals(k)) - { - path=pathmap.get(k)+path.substring(k.length()); - break; - } - } - } - if(pathtranslation) - { - if(path.substring(0,1).equals("/")) - path=path.replace('\\','/'); - else - path=path.replace('/','\\'); + private String MapPath(PHPLineBreakpoint phpLBP) { + IPath filename; + if (remote) { + filename = phpLBP.getMarker().getResource() + .getProjectRelativePath(); + filename = remoteSourcePath.append(filename); + } else + filename = phpLBP.getMarker().getResource().getLocation(); + String path = filename.toOSString(); + if (pathmap != null && remote) { + java.util.Iterator i = pathmap.keySet().iterator(); + while (i.hasNext()) { + String k = (String) i.next(); + if (path.startsWith(k)) { + path = pathmap.get(k) + path.substring(k.length()); + break; + } + } + } + if (pathtranslation && remote) { + if (path.substring(0, 1).equals("/")) + path = path.replace('\\', '/'); + else + path = path.replace('/', '\\'); + } + return path; } - return path; - } public void addBreakpoint(IBreakpoint breakpoint) { if (DBGInt == null) @@ -240,14 +235,19 @@ public class PHPDBGProxy { DBGInt.continueExecution(); phpLoop.notifyWait(); } catch (IOException e) { - PHPDebugCorePlugin.log(e); + PHPeclipsePlugin.log("Debugging session ended.", e); stop(); } } public void pause() { try { - DBGInt.pauseExecution(); + if (null != DBGInt) + DBGInt.pauseExecution(); + else { + // TODO Make sure the Suspend action is grayed out + // when DBGInt is null + } } catch (IOException e) { PHPDebugCorePlugin.log(e); stop(); @@ -347,8 +347,17 @@ public class PHPDBGProxy { } public synchronized void setShouldStop() { - shouldStop = true; - } + shouldStop = true; + try { + // If the loop thread is blocked on the server socket, + // forcibly unblock it to avoid leaking the thread, + // the socket and the port + closeServerSocket(); + } catch (IOException x) { + // Log this as a warning? + PHPDebugCorePlugin.log(x); + } + } public synchronized void notifyWait() { notify(); @@ -473,4 +482,4 @@ public class PHPDBGProxy { } } } -} \ No newline at end of file +}