aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-04-16 13:54:34 +0200
committerhjk <qtc-committer@nokia.com>2009-04-16 14:42:45 +0200
commite2ef47bcffbab2cabed2ff80f317dddfebfd59a2 (patch)
treef92f5c0162a6ae0d17fd240bcb37be8ed2761243
parent98c87839bdf09c3afa05cb1395b653ff4570383b (diff)
debugger: prevent endless loop when contructor breakpoints are located
in inaccessible files
-rw-r--r--src/plugins/debugger/gdbengine.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 709324378d..64d0314a30 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -2214,7 +2214,7 @@ void GdbEngine::extractDataFromInfoBreak(const QString &output, BreakpointData *
// 2.1 y 0x0040168e in MainWindow::MainWindow(QWidget*) at mainwindow.cpp:7
// 2.2 y 0x00401792 in MainWindow::MainWindow(QWidget*) at mainwindow.cpp:7
-
+ // tested in ../../../tests/auto/debugger/
QRegExp re("MULTIPLE.*(0x[0-9a-f]+) in (.*)\\s+at (.*):([\\d]+)([^\\d]|$)");
re.setMinimal(true);
@@ -2223,6 +2223,10 @@ void GdbEngine::extractDataFromInfoBreak(const QString &output, BreakpointData *
data->bpFuncName = re.cap(2).trimmed();
data->bpLineNumber = re.cap(4);
QString full = fullName(re.cap(3));
+ if (full.isEmpty()) {
+ qDebug() << "NO FULL NAME KNOWN FOR" << re.cap(3);
+ full = re.cap(3); // FIXME: wrong, but prevents recursion
+ }
data->markerLineNumber = data->bpLineNumber.toInt();
data->markerFileName = full;
data->bpFileName = full;