37 QJsonObject event, body, script;
38 event.insert(QStringLiteral(
"type"), QStringLiteral(
"event"));
44 event.insert(QStringLiteral(
"event"), QStringLiteral(
"break"));
45 QV4::CppStackFrame *frame = debugger->engine()->currentStackFrame;
49 body.insert(QStringLiteral(
"invocationText"), frame->function());
50 body.insert(QStringLiteral(
"sourceLine"), qAbs(frame->lineNumber()) - 1);
53 QJsonArray breakPoints;
54 const QList<
int> ids = breakPointIds(frame->source(), frame->lineNumber());
55 for (
int breakPointId : ids)
56 breakPoints.push_back(breakPointId);
57 body.insert(QStringLiteral(
"breakpoints"), breakPoints);
58 script.insert(QStringLiteral(
"name"), frame->source());
62 event.insert(QStringLiteral(
"event"), QStringLiteral(
"exception"));
66 if (!script.isEmpty())
67 body.insert(QStringLiteral(
"script"), script);
69 event.insert(QStringLiteral(
"body"), body);
70 m_debugService->send(event);
75 Q_ASSERT(!m_debuggers.contains(debugger));
76 m_debuggers << debugger;
80 for (
const BreakPoint &breakPoint : std::as_const(m_breakPoints))
81 if (breakPoint.enabled)
82 debugger->addBreakPoint(breakPoint.fileName, breakPoint.lineNr, breakPoint.condition);
84 connect(debugger, &QObject::destroyed,
this, &QV4DebuggerAgent::handleDebuggerDeleted);
85 connect(debugger, &QV4Debugger::debuggerPaused,
this, &QV4DebuggerAgent::debuggerPaused,
86 Qt::QueuedConnection);
91 m_debuggers.removeAll(debugger);
92 disconnect(debugger, &QObject::destroyed,
this, &QV4DebuggerAgent::handleDebuggerDeleted);
93 disconnect(debugger, &QV4Debugger::debuggerPaused,
this, &QV4DebuggerAgent::debuggerPaused);
127 for (QV4Debugger *debugger : std::as_const(m_debuggers))
128 debugger->addBreakPoint(fileName, lineNumber, condition);
131 const int id = ++m_lastBreakPointId;
132 m_breakPoints.insert(id, BreakPoint(fileName, lineNumber, enabled, condition));
157 BreakPoint &breakPoint = m_breakPoints[id];
158 if (!breakPoint.isValid() || breakPoint.enabled == onoff)
160 breakPoint.enabled = onoff;
162 for (QV4Debugger *debugger : std::as_const(m_debuggers)) {
164 debugger->addBreakPoint(breakPoint.fileName, breakPoint.lineNr, breakPoint.condition);
166 debugger->removeBreakPoint(breakPoint.fileName, breakPoint.lineNr);