diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 1b6a64c6a5c..ef6a753b23f 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -47,6 +47,9 @@ #include #include +#include +#include + #include #include #include @@ -1384,6 +1387,17 @@ void QmlEnginePrivate::scripts(int types, const QList ids, bool includeSour runCommand(cmd); } +static QString targetFile(const FilePath &original) +{ + auto projectTree = ProjectExplorer::ProjectTree::instance(); + auto node = projectTree->nodeForFile(original); + + if (auto resourceNode = dynamic_cast(node)) + return QLatin1String("qrc:") + resourceNode->qrcPath(); + + return original.fileName(); +} + void QmlEnginePrivate::setBreakpoint(const QString type, const QString target, bool enabled, int line, int column, const QString condition, int ignoreCount) @@ -1413,7 +1427,7 @@ void QmlEnginePrivate::setBreakpoint(const QString type, const QString target, cmd.arg(ENABLED, enabled); if (type == SCRIPTREGEXP) - cmd.arg(TARGET, Utils::FilePath::fromString(target).fileName()); + cmd.arg(TARGET, targetFile(FilePath::fromString(target))); else cmd.arg(TARGET, target); @@ -1841,6 +1855,12 @@ void QmlEnginePrivate::messageReceived(const QByteArray &data) QList v8Breakpoints; const QVariantList v8BreakpointIdList = breakData.value("breakpoints").toList(); + // skip debug break if no breakpoint - likely stopped in another file with same naming + if (v8BreakpointIdList.isEmpty()) { + inferiorStop = false; + continueDebugging(Continue); + } + for (const QVariant &breakpointId : v8BreakpointIdList) { const QString responseId = QString::number(breakpointId.toInt()); Breakpoint bp = engine->breakHandler()->findBreakpointByResponseId(responseId);