From: Jan P. <jp...@us...> - 2006-09-16 17:56:00
|
Update of /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv19452/src/org/epic/debug Modified Files: Tag: stable PerlDB.java Log Message: Fixed bug [ 1559162 ] Debugger does not stop on breakpoint Index: PerlDB.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.debug/src/org/epic/debug/PerlDB.java,v retrieving revision 1.46.2.2 retrieving revision 1.46.2.3 diff -u -d -r1.46.2.2 -r1.46.2.3 --- PerlDB.java 2 Sep 2006 13:06:19 -0000 1.46.2.2 +++ PerlDB.java 16 Sep 2006 17:55:56 -0000 1.46.2.3 @@ -18,6 +18,9 @@ import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.progress.UIJob; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; @@ -27,11 +30,7 @@ import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.ITerminate; import org.eclipse.debug.core.model.IThread; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; import org.epic.debug.ui.action.ShowLocalVariableActionDelegate; -import org.epic.debug.util.DebuggerProxy; import org.epic.debug.util.DebuggerProxy2; import org.epic.debug.varparser.PerlDebugValue; import org.epic.debug.varparser.PerlDebugVar; @@ -89,6 +88,7 @@ private final RE mReSessionFinished1, mReSessionFinished2; private final RE mRe_IP_Pos; private final RE mRe_IP_Pos_Eval; + private final RE mRe_IP_Pos_CODE; private final RE mReSwitchFileFail; private final RE mReSetLineBreakpoint; private final RE mReStackTrace; @@ -148,6 +148,7 @@ mReSessionFinished2 = newRE("Debugged program terminated.", false); mRe_IP_Pos = newRE("^[^\\(]*\\((.*):(\\d+)\\):[\\n\\t]", false); mRe_IP_Pos_Eval = newRE("^[^\\(]*\\(eval\\s+\\d+\\)\\[(.*):(\\d+)\\]$", false); + mRe_IP_Pos_CODE = newRE("^.*CODE\\(0x[0-9a-fA-F]+\\)\\(([^:]*):(\\d+)\\):[\\n\\t]", false); mReSwitchFileFail = newRE("^No file", false); mReSetLineBreakpoint = newRE("^\\s+DB<\\d+>", false); mReEnterFrame = newRE("^\\s*entering", false); @@ -1121,10 +1122,22 @@ startSubCommand(mCommandExecuteCode, ".", false); REMatch temp; - REMatch result = mRe_IP_Pos.getMatch(mDebugSubCommandOutput); - file_name = result.toString(1); - temp = mRe_IP_Pos_Eval.getMatch(file_name); - if (temp != null) result = temp; + // mRe_IP_Pos_CODE handles locations like + // main::CODE(0x814f960)(/some/path/trycatch.pl:7): + // mRe_IP_Pos handles locations like + // main::(/some/path/foobar.pl:7): + // mRe_IP_Pos_Eval handles locations like + // + System.err.println("commandoutput={"+mDebugSubCommandOutput+"}"); + + REMatch result = mRe_IP_Pos_CODE.getMatch(mDebugSubCommandOutput); + if (result == null) + { + result = mRe_IP_Pos.getMatch(mDebugSubCommandOutput); + file_name = result.toString(1); + temp = mRe_IP_Pos_Eval.getMatch(file_name); + if (temp != null) result = temp; + } line = Integer.parseInt(result.toString(2)); file = getPathFor(result.toString(1)); |