From c448ae842d10e476b586871ef9713633047881e7 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Thu, 18 Nov 2010 15:47:50 +0100 Subject: [PATCH] debugger: fix markers for breakpoints in constructors --- src/plugins/debugger/breakhandler.cpp | 3 ++- src/plugins/debugger/gdb/gdbengine.cpp | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index a4e645de48b..3307a473e46 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -407,7 +407,7 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const if (!response.fileName.isEmpty()) str = response.fileName; if (str.isEmpty() && !data.fileName.isEmpty()) - str = response.fileName; + str = data.fileName; if (str.isEmpty()) { QString s = QFileInfo(str).fileName(); if (!s.isEmpty()) @@ -582,6 +582,7 @@ void BreakHandler::setEngine(BreakpointId id, DebuggerEngine *value) it->engine = value; it->state = BreakpointInsertRequested; it->response = BreakpointResponse(); + it->response.fileName = it->data.fileName; updateMarker(id); scheduleSynchronization(); } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 1a5a0833fd0..5636224ea3a 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1168,12 +1168,18 @@ void GdbEngine::handleStopResponse(const GdbMi &data) if (bkptno && frame.isValid()) { // Use opportunity to update the marker position. - const QString fileName = - QString::fromUtf8(frame.findChild("fullname").data()); - const int lineNumber = frame.findChild("line").data().toInt(); + BreakHandler *handler = breakHandler(); + BreakpointId id = handler->findBreakpointByNumber(bkptno); + const BreakpointResponse &response = handler->response(id); + QString fileName = response.fileName; + if (fileName.isEmpty()) + fileName = handler->fileName(id); + if (fileName.isEmpty()) + fileName = QString::fromUtf8(frame.findChild("fullname").data()); + if (fileName.isEmpty()) + fileName = QString::fromUtf8(frame.findChild("file").data()); if (!fileName.isEmpty()) { - BreakHandler *handler = breakHandler(); - BreakpointId id = handler->findBreakpointByNumber(bkptno); + int lineNumber = frame.findChild("line").data().toInt(); handler->setMarkerFileAndLine(id, fileName, lineNumber); } } -- GitLab