X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugTarget.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugTarget.java index ec0ca16..0c9f1d3 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugTarget.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugTarget.java @@ -70,7 +70,6 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE * @param launch containing launch * @param process process of the interpreter * @param ideKey - * @param pathMap Pathmap for the debug session * @exception CoreException if unable to connect to host */ public XDebugTarget(ILaunch launch, IProcess process, String ideKey) throws CoreException { @@ -177,10 +176,8 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE fSuspended = false; XDebugCorePlugin.getBreakpointManager().removeBreakpointListener(this); - fireTerminateEvent(); + fireEvent(new DebugEvent(this, DebugEvent.TERMINATE)); DebugPlugin.getDefault().removeDebugEventListener(this); - /*if (fThread!=null) - fThread.removeEventListeners();*/ } } @@ -211,8 +208,9 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE public void resume() throws DebugException { if (fDebugConnection != null) { fThread.setBreakpoints(null); + resumed(DebugEvent.RESUME); fDebugConnection.run(); - } + } } /** @@ -273,8 +271,6 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE try { if (breakpoint.isEnabled()) { if (marker != null) { - //XDebugResponse dr = fDebugConnection.breakpointSet(newPath.toString(), ((ILineBreakpoint)breakpoint).getLineNumber()); - int id = fDebugConnection.breakpointSet(newPath.toString(), ((ILineBreakpoint)breakpoint).getLineNumber(), marker.getAttribute(XDebugBreakpoint.HIT_COUNT,-1)); XDebugResponse dr = getResponse(id); @@ -363,7 +359,6 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE */ public boolean isDisconnected() { return (false); -// return (fDebugConnection==null); } /* (non-Javadoc) @@ -394,18 +389,18 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE Integer.parseInt(response.getValue()); System.out.println("in Target.started()"); - /*XDebugResponse response = fDebugConnection.featureGet("max_children"); - String a1 = response.getValue(); - System.out.println("max children:"+a1); - XDebugResponse response1 = fDebugConnection.featureGet("max_children"); - String a2 = response1.getValue(); - System.out.println("max depth:"+a2);*/ - - - int id1 = fDebugConnection.featureSet("max_depth", "100" ); + + // Dirty hack + // Need to refactory plugin to get variables in lazy mode. + int id1 = fDebugConnection.featureSet("max_depth", "1024" ); XDebugResponse response1 = getResponse(id1); if (response1.getAttributeValue("success").equals("1") ) { - System.out.println("Set depth to 100 (hack)"); + System.out.println("Set depth to 1024 (hack)"); + } + int id2 = fDebugConnection.featureSet("max_children", "1024" ); + XDebugResponse response2 = getResponse(id2); + if (response2.getAttributeValue("success").equals("1") ) { + System.out.println("Set children to 1024 (hack)"); } installDeferredBreakpoints(); @@ -483,6 +478,16 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE } } + public Node eval(String expression) { + int id = fDebugConnection.eval(expression); + XDebugResponse response = getResponse(id); + + Node evalResponse = response.getParentNode(); + Node evalProperty = evalResponse.getFirstChild(); + + return evalProperty; + } + public void handleDebugEvents(DebugEvent[] events) { for (int i = 0; i < events.length; i++) { DebugEvent event = events[i]; @@ -536,20 +541,15 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE return; } + resumed(DebugEvent.TERMINATE); + stopListener(); fDebugConnection.close(); - fThread.removeEventListeners(); - fThread = null; - fThreads = new IThread[0]; - -/* stopListener(); - fDebugConnection.close();*/ - fSuspended = false; // Dirty hack to check debugging mode (remote or local) - if (fProcess!=null) { + if (fProcess != null) { try { terminate(); } catch (DebugException e) { @@ -558,17 +558,20 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE } else { fDebugConnection = null; fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT)); - } + } + + fThread.removeEventListeners(); + fThread = null; + fThreads = new IThread[0]; } - public void handleProxyEvent(/*String ideKey,*/ XDebugConnection connection) { + public void handleProxyEvent(XDebugConnection connection) { setDebugConnection(connection); - System.out.println("* New Connection - XDebug.Target: " + fDebugConnection.getSessionID()); - - fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CHANGE)); + //System.out.println("* New Connection - XDebug.Target: " + fDebugConnection.getSessionID()); fThread = new XDebugThread(this); fThreads = new IThread[] {fThread}; + fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CHANGE)); try { started(); } catch( DebugException e ){ @@ -596,7 +599,6 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE } public Node getLocalVariables(int level) throws DebugException { -// XDebugResponse response = fDebugConnection.contextGet(level, 0); int id = fDebugConnection.contextGet(level, 0); XDebugResponse response = getResponse(id); @@ -604,19 +606,21 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE } public Node getGlobalVariables(int level) throws DebugException { - //XDebugResponse response = fDebugConnection.contextGet(level, 1); - int id = fDebugConnection.contextGet(level, 1); XDebugResponse response = getResponse(id); return response.getParentNode(); } + public void stop() { + fDebugConnection.stop(); + } + protected IBreakpoint breakpointHit(Node node) { Node child = node.getFirstChild(); if (child.getNodeName().equals("stack")) { int lineNumber = Integer.parseInt(PHPDebugUtils.getAttributeValue(child, "lineno")); - String filename=PHPDebugUtils.getAttributeValue(child, "filename"); + String filename = PHPDebugUtils.getAttributeValue(child, "filename"); IBreakpoint[] breakpoints = XDebugCorePlugin.getBreakpoints(); for (int i = 0; i < breakpoints.length; i++) { IBreakpoint breakpoint = breakpoints[i]; @@ -638,7 +642,6 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE int id = fDebugConnection.breakpointGet(marker.getAttribute(XDebugLineBreakpoint.BREAKPOINT_ID,-1)); XDebugResponse dr = getResponse(id); - //String bpid = dr.getAttributeValue("command"); Node hitCo = dr.getParentNode().getFirstChild(); int hitCount = 0; if (hitCo.hasAttributes()) { @@ -649,7 +652,6 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE } } - //String hitCount = hitCo.getAttributeValue("hit_count"); if(PHPDebugUtils.unescapeString(filename).endsWith(endfilename) && (lineBreakpoint.getLineNumber() == lineNumber) ) { if (marker.getAttribute(XDebugLineBreakpoint.HIT_COUNT, 0) > 0) { @@ -676,8 +678,8 @@ public class XDebugTarget extends XDebugElement implements IDebugTarget, IDebugE fResponseListener.schedule(); } - public /*boolean*/ void stopListener() { - /*return*/ fResponseListener.cancel(); //done(null); //.cancel(); + public void stopListener() { + fResponseListener.cancel(); } public XDebugResponse getResponse(int id) { XDebugResponse response = fResponseListener.getResponse(id);