From: Jan P. <jp...@us...> - 2006-12-27 18:31:48
|
Update of /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/db In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv28394/src/org/epic/debug/db Modified Files: DebuggerInterface.java Log Message: Fixed bug [ 1623087 ] Remote debugger ignores breakpoints. Index: DebuggerInterface.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/db/DebuggerInterface.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- DebuggerInterface.java 22 Dec 2006 14:25:24 -0000 1.5 +++ DebuggerInterface.java 27 Dec 2006 18:31:43 -0000 1.6 @@ -31,6 +31,7 @@ private final Thread thread; private final String perlVersion; + private Boolean windows; private boolean disposed; private Command asyncCommand; @@ -142,6 +143,11 @@ new Path(result.toString(1)), Integer.parseInt(result.toString(2))); } + + public String getOS() throws IOException + { + return runSyncCommand(CMD_EXEC, "print $DB::OUT $^O;").trim(); + } public String getPerlVersion() throws IOException { @@ -220,7 +226,7 @@ */ public void setLoadBreakpoint(IPath path) throws IOException { - runSyncCommand(CMD_EXEC, "b load " + path.toOSString()); + runSyncCommand(CMD_EXEC, "b load " + getOSPath(path)); } public Command asyncStepInto() @@ -265,11 +271,29 @@ */ public boolean switchToFile(IPath path) throws IOException { - String output = runSyncCommand(CMD_EXEC, "f " + path.toOSString()); + String output = runSyncCommand(CMD_EXEC, "f " + getOSPath(path)); return re.SWITCH_FILE_FAIL.getAllMatches(output).length == 0; } + private String getOSPath(IPath path) throws IOException + { + if (isWindows()) return path.toString().replace('/', '\\'); + else return path.toString(); + } + + private boolean isWindows() throws IOException + { + if (windows == null) + { + String os = getOS(); + windows = new Boolean( + os.equalsIgnoreCase("mswin32") || + os.equalsIgnoreCase("netware")); + } + return windows.booleanValue(); + } + private Command runAsyncCommand(int command, String code, boolean notifyOnFinish) { synchronized (LOCK) |