summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
diff options
context:
space:
mode:
authorAurindam Jana <aurindam.jana@nokia.com>2011-12-22 18:43:09 +0100
committerAurindam Jana <aurindam.jana@nokia.com>2012-01-09 10:53:19 +0100
commit641716bee3d91663de5d660c22fd27ffafaeeaa0 (patch)
tree89806db5eecabeac055e5838cec7d6d6207c3d0b /src/plugins/debugger/qml/qmlv8debuggerclient.cpp
parentbcd9bbb6f5ff93895148db7d0db606aaebaebd76 (diff)
downloadqt-creator-641716bee3d91663de5d660c22fd27ffafaeeaa0.tar.gz
QmlDebugging: Implement RunToLine capability
Change-Id: I153c30310ac318d2de8b9a96c6d1e7f80439d306 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Diffstat (limited to 'src/plugins/debugger/qml/qmlv8debuggerclient.cpp')
-rw-r--r--src/plugins/debugger/qml/qmlv8debuggerclient.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
index b326a340b3..03afa154ae 100644
--- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
+++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp
@@ -138,6 +138,7 @@ public:
QmlEngine *engine;
QHash<BreakpointModelId, int> breakpoints;
QHash<int, BreakpointModelId> breakpointsSync;
+ QList<int> breakpointsTemp;
QScriptValue parser;
QScriptValue stringifier;
@@ -1019,6 +1020,19 @@ void QmlV8DebuggerClient::executeStepI()
d->continueDebugging(In);
}
+void QmlV8DebuggerClient::executeRunToLine(const ContextData &data)
+{
+ if (d->isOldService) {
+ d->setBreakpoint(QString(_(SCRIPT)), QFileInfo(data.fileName).fileName(),
+ data.lineNumber - 1);
+ } else {
+ d->setBreakpoint(QString(_(SCRIPTREGEXP)), QFileInfo(data.fileName).fileName(),
+ data.lineNumber - 1);
+ }
+ clearExceptionSelection();
+ d->continueDebugging(Continue);
+}
+
void QmlV8DebuggerClient::continueInferior()
{
clearExceptionSelection();
@@ -1282,11 +1296,16 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data)
const QVariantMap breakpointData = resp.value(_(BODY)).toMap();
int index = breakpointData.value(_("breakpoint")).toInt();
- BreakpointModelId id = d->breakpointsSync.take(seq);
- d->breakpoints.insert(id, index);
+ if (d->breakpointsSync.contains(seq)) {
+ BreakpointModelId id = d->breakpointsSync.take(seq);
+ d->breakpoints.insert(id, index);
- if (d->engine->breakHandler()->state(id) != BreakpointInserted)
- d->engine->breakHandler()->notifyBreakpointInsertOk(id);
+ if (d->engine->breakHandler()->state(id) != BreakpointInserted)
+ d->engine->breakHandler()->notifyBreakpointInsertOk(id);
+
+ } else {
+ d->breakpointsTemp.append(index);
+ }
} else if (debugCommand == _(CHANGEBREAKPOINT)) {
@@ -1447,6 +1466,10 @@ void QmlV8DebuggerClient::messageReceived(const QByteArray &data)
}
if (d->engine->state() == InferiorRunOk) {
+ foreach (const QVariant &breakpointId, v8BreakpointIds) {
+ if (d->breakpointsTemp.contains(breakpointId.toInt()))
+ d->clearBreakpoint(breakpointId.toInt());
+ }
d->engine->inferiorSpontaneousStop();
d->backtrace();
} else if (d->engine->state() == InferiorStopOk) {