*/
package net.sourceforge.phpeclipse.xdebug.php.model;
+//import java.io.ByteArrayInputStream;
+//import java.io.IOException;
import java.util.List;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
import net.sourceforge.phpeclipse.xdebug.core.IPHPDebugEvent;
import net.sourceforge.phpeclipse.xdebug.core.IProxyEventListener;
import net.sourceforge.phpeclipse.xdebug.core.IXDebugPreferenceConstants;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.IThread;
+import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
+//import org.xml.sax.SAXException;
import net.sourceforge.phpeclipse.xdebug.core.xdebug.ResponseListener;
import net.sourceforge.phpeclipse.xdebug.core.xdebug.XDebugConnection;
-import net.sourceforge.phpeclipse.xdebug.core.xdebug.ResponseListener.XDebugResponse;
+import net.sourceforge.phpeclipse.xdebug.core.xdebug.XDebugResponse;
/**
* @author Christian
* @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 {
fSuspended = false;
XDebugCorePlugin.getBreakpointManager().removeBreakpointListener(this);
- fThread.fireTerminateEvent();
+ fireEvent(new DebugEvent(this, DebugEvent.TERMINATE));
DebugPlugin.getDefault().removeDebugEventListener(this);
- /*if (fThread!=null)
- fThread.removeEventListeners();*/
}
}
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);
*/
public boolean isDisconnected() {
return (false);
-// return (fDebugConnection==null);
}
/* (non-Javadoc)
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);*/
-
-
+
+ // 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") ) {
}
}
- public Node eval(String expression) {
- int id = fDebugConnection.eval(expression);
- XDebugResponse response = getResponse(id);
-
- Node evalResponse = response.getParentNode();
- Node evalProperty = evalResponse.getFirstChild();
+ public Node eval(String expression) throws DebugException {
+ Node evalProperty = null;
+ if (fDebugConnection != null) {
+ int id = fDebugConnection.eval(expression);
+ //Node evalProperty = new Node("");
+ //if (id > 0) {
+ XDebugResponse response = getResponse(id);
+
+ Node evalResponse = response.getParentNode();
+ /*Node*/ evalProperty = evalResponse.getFirstChild();
+ //} /*else {
+
+ //}*/
+ } else {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = null;
+ Document doc = null;
+
+ try {
+ builder = factory.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ e.printStackTrace();
+ }
+ //try {
+ doc = builder.newDocument(); // .parse("");
+ evalProperty = doc.createElement("value");
+ /*} catch (SAXException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }*/
+ }
return evalProperty;
}
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) {
}
} else {
fDebugConnection = null;
- fThread.fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT));
+ fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT));
}
fThread.removeEventListeners();
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};
- fThread.fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CHANGE));
+ fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CHANGE));
try {
started();
} catch( DebugException e ){
}
public Node getLocalVariables(int level) throws DebugException {
-// XDebugResponse response = fDebugConnection.contextGet(level, 0);
int id = fDebugConnection.contextGet(level, 0);
XDebugResponse response = getResponse(id);
}
public Node getGlobalVariables(int level) throws DebugException {
- //XDebugResponse response = fDebugConnection.contextGet(level, 1);
-
int id = fDebugConnection.contextGet(level, 1);
XDebugResponse response = getResponse(id);
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()) {
}
}
- //String hitCount = hitCo.getAttributeValue("hit_count");
if(PHPDebugUtils.unescapeString(filename).endsWith(endfilename)
&& (lineBreakpoint.getLineNumber() == lineNumber) ) {
if (marker.getAttribute(XDebugLineBreakpoint.HIT_COUNT, 0) > 0) {
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);