diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index a4e645de48b0c86a31651b90632b1539672e859d..3307a473e466e12dc3139ebb00729520bc21a8b4 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 1a5a0833fd087c8ba04fae7ebc51c66896f34598..5636224ea3a9adb502fc3ed045e9e96fbdeb922c 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); } }