From 5f38a26c9e5a39620764d0966f4bf39be5d20387 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Feb 2011 10:16:11 +0100 Subject: [PATCH] debugger: fix 'Jump To/Run to' when in instruction-wise mode --- src/plugins/debugger/cdb/cdbengine.cpp | 26 ++----- src/plugins/debugger/cdb/cdbengine.h | 4 +- src/plugins/debugger/debuggerengine.cpp | 4 +- src/plugins/debugger/debuggerengine.h | 17 ++++- src/plugins/debugger/debuggerplugin.cpp | 73 ++++++++++--------- .../debugger/debuggertooltipmanager.cpp | 2 + src/plugins/debugger/gdb/gdbengine.cpp | 49 ++++++------- src/plugins/debugger/gdb/gdbengine.h | 4 +- .../debugger/lldb/guest/lldbengineguest.cpp | 10 +-- .../debugger/lldb/guest/lldbengineguest.h | 4 +- src/plugins/debugger/lldb/ipcengineguest.cpp | 18 ++--- src/plugins/debugger/lldb/ipcengineguest.h | 4 +- src/plugins/debugger/lldb/ipcenginehost.cpp | 12 +-- src/plugins/debugger/lldb/ipcenginehost.h | 4 +- src/plugins/debugger/pdb/pdbengine.cpp | 10 +-- src/plugins/debugger/pdb/pdbengine.h | 4 +- src/plugins/debugger/qml/qmlcppengine.cpp | 8 +- src/plugins/debugger/qml/qmlcppengine.h | 4 +- src/plugins/debugger/qml/qmlengine.cpp | 10 +-- src/plugins/debugger/qml/qmlengine.h | 4 +- src/plugins/debugger/script/scriptengine.cpp | 10 +-- src/plugins/debugger/script/scriptengine.h | 4 +- src/plugins/debugger/tcf/tcfengine.cpp | 10 +-- src/plugins/debugger/tcf/tcfengine.h | 4 +- src/plugins/debugger/watchutils.cpp | 26 ------- src/plugins/debugger/watchutils.h | 4 - 26 files changed, 145 insertions(+), 184 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index b12a8351611..ccc88c30822 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -172,20 +172,10 @@ struct MemoryViewCookie quint64 length; }; -struct SourceLocationCookie -{ - explicit SourceLocationCookie(const QString &f = QString(), int l = 0) : - fileName(f), lineNumber(l) {} - - QString fileName; - int lineNumber; -}; - } // namespace Internal } // namespace Debugger Q_DECLARE_METATYPE(Debugger::Internal::MemoryViewCookie) -Q_DECLARE_METATYPE(Debugger::Internal::SourceLocationCookie) namespace Debugger { namespace Internal { @@ -1070,12 +1060,12 @@ void CdbEngine::doInterruptInferior(SpecialStopMode sm) #endif } -void CdbEngine::executeRunToLine(const QString &fileName, int lineNumber) +void CdbEngine::executeRunToLine(const ContextData &data) { // Add one-shot breakpoint BreakpointParameters bp(BreakpointByFileAndLine); - bp.fileName = fileName; - bp.lineNumber = lineNumber; + bp.fileName = data.fileName; + bp.lineNumber = data.lineNumber; postCommand(cdbAddBreakpointCommand(bp, BreakpointId(-1), true), 0); continueInferior(); } @@ -1102,13 +1092,13 @@ void CdbEngine::setRegisterValue(int regnr, const QString &value) reloadRegisters(); } -void CdbEngine::executeJumpToLine(const QString & fileName, int lineNumber) +void CdbEngine::executeJumpToLine(const ContextData &data) { QByteArray cmd; ByteArrayInputStream str(cmd); // Resolve source line address and go to that location - str << "? `" << QDir::toNativeSeparators(fileName) << ':' << lineNumber << '`'; - const QVariant cookie = qVariantFromValue(SourceLocationCookie(fileName, lineNumber)); + str << "? `" << QDir::toNativeSeparators(data.fileName) << ':' << data.lineNumber << '`'; + const QVariant cookie = qVariantFromValue(data); postBuiltinCommand(cmd, 0, &CdbEngine::handleJumpToLineAddressResolution, 0, cookie); } @@ -1123,8 +1113,8 @@ void CdbEngine::handleJumpToLineAddressResolution(const CdbBuiltinCommandPtr &cm if (equalPos == -1) return; answer.remove(0, equalPos + 3); - QTC_ASSERT(qVariantCanConvert(cmd->cookie), return ; ) - const SourceLocationCookie cookie = qvariant_cast(cmd->cookie); + QTC_ASSERT(qVariantCanConvert(cmd->cookie), return); + const ContextData cookie = qvariant_cast(cmd->cookie); QByteArray registerCmd; ByteArrayInputStream str(registerCmd); diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index e97ced97d2c..3d8de9f91fb 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -108,9 +108,9 @@ public: virtual void continueInferior(); virtual void interruptInferior(); - virtual void executeRunToLine(const QString &fileName, int lineNumber); + virtual void executeRunToLine(const ContextData &data); virtual void executeRunToFunction(const QString &functionName); - virtual void executeJumpToLine(const QString &fileName, int lineNumber); + virtual void executeJumpToLine(const ContextData &data); virtual void assignValueInDebugger(const WatchData *w, const QString &expr, const QVariant &value); virtual void executeDebuggerCommand(const QString &command); diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 073b87ae3c2..f1a87e5551a 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1458,7 +1458,7 @@ void DebuggerEngine::interruptInferior() { } -void DebuggerEngine::executeRunToLine(const QString &, int) +void DebuggerEngine::executeRunToLine(const ContextData &) { } @@ -1466,7 +1466,7 @@ void DebuggerEngine::executeRunToFunction(const QString &) { } -void DebuggerEngine::executeJumpToLine(const QString &, int) +void DebuggerEngine::executeJumpToLine(const ContextData &) { } diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 63d4d463478..cdba762939f 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -121,6 +121,17 @@ private: quint64 m_address; }; +class ContextData +{ +public: + ContextData() : lineNumber(0), address(0) {} + +public: + QString fileName; + int lineNumber; + quint64 address; +}; + } // namespace Internal @@ -323,9 +334,9 @@ protected: virtual void interruptInferior(); virtual void requestInterruptInferior(); - virtual void executeRunToLine(const QString &fileName, int lineNumber); + virtual void executeRunToLine(const Internal::ContextData &data); virtual void executeRunToFunction(const QString &functionName); - virtual void executeJumpToLine(const QString &fileName, int lineNumber); + virtual void executeJumpToLine(const Internal::ContextData &data); virtual void executeDebuggerCommand(const QString &command); virtual void frameUp(); @@ -374,4 +385,6 @@ private: } // namespace Debugger +Q_DECLARE_METATYPE(Debugger::Internal::ContextData) + #endif // DEBUGGER_DEBUGGERENGINE_H diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 48dbe30ef50..36103cf1d61 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -530,22 +530,25 @@ private: // /////////////////////////////////////////////////////////////////////// -class ContextData +static TextEditor::ITextEditor *currentTextEditor() { -public: - ContextData() : lineNumber(0), address(0) {} - -public: - QString fileName; - int lineNumber; - quint64 address; -}; - -} // namespace Internal -} // namespace Debugger - -Q_DECLARE_METATYPE(Debugger::Internal::ContextData) + if (const Core::EditorManager *editorManager = Core::EditorManager::instance()) + if (Core::IEditor *editor = editorManager->currentEditor()) + return qobject_cast(editor); + return 0; +} +static bool currentTextEditorPosition(ContextData *data) +{ + if (TextEditor::ITextEditor *textEditor = currentTextEditor()) { + if (const Core::IFile *file = textEditor->file()) { + data->fileName = file->fileName(); + data->lineNumber = textEditor->currentLine(); + return true; + } + } + return false; +} /////////////////////////////////////////////////////////////////////// // @@ -553,9 +556,6 @@ Q_DECLARE_METATYPE(Debugger::Internal::ContextData) // /////////////////////////////////////////////////////////////////////// -namespace Debugger { -namespace Internal { - static DebuggerPluginPrivate *theDebuggerCore = 0; /*! @@ -817,20 +817,18 @@ public slots: { //removeTooltip(); currentEngine()->resetLocation(); - QString fileName; - int lineNumber; - if (currentTextEditorPosition(&fileName, &lineNumber)) - currentEngine()->executeJumpToLine(fileName, lineNumber); + ContextData data; + if (currentTextEditorPosition(&data)) + currentEngine()->executeJumpToLine(data); } void handleExecRunToLine() { //removeTooltip(); currentEngine()->resetLocation(); - QString fileName; - int lineNumber; - if (currentTextEditorPosition(&fileName, &lineNumber)) - currentEngine()->executeRunToLine(fileName, lineNumber); + ContextData data; + if (currentTextEditorPosition(&data)) + currentEngine()->executeRunToLine(data); } void handleExecRunToSelectedFunction() @@ -883,7 +881,7 @@ public slots: const QAction *action = qobject_cast(sender()); QTC_ASSERT(action, return); const ContextData data = action->data().value(); - currentEngine()->executeRunToLine(data.fileName, data.lineNumber); + currentEngine()->executeRunToLine(data); } void slotJumpToLine() @@ -891,7 +889,7 @@ public slots: const QAction *action = qobject_cast(sender()); QTC_ASSERT(action, return); const ContextData data = action->data().value(); - currentEngine()->executeJumpToLine(data.fileName, data.lineNumber); + currentEngine()->executeJumpToLine(data); } void handleAddToWatchWindow() @@ -1619,6 +1617,7 @@ void DebuggerPluginPrivate::requestContextMenu(ITextEditor *editor, ContextData args; args.lineNumber = lineNumber; + bool contextUsable = true; BreakpointId id = BreakpointId(); if (editor->property("DisassemblerView").toBool()) { @@ -1631,6 +1630,7 @@ void DebuggerPluginPrivate::requestContextMenu(ITextEditor *editor, args.address = needle.address; needle.lineNumber = -1; id = breakHandler()->findSimilarBreakpoint(needle); + contextUsable = args.address != 0; } else { args.fileName = editor->file()->fileName(); id = breakHandler() @@ -1668,27 +1668,30 @@ void DebuggerPluginPrivate::requestContextMenu(ITextEditor *editor, menu->addAction(act); } else { // Handle non-existing breakpoint. - const QString text = args.address ? - tr("Set Breakpoint at 0x%1").arg(args.address, 0, 16) : - tr("Set Breakpoint at line %1").arg(lineNumber); + const QString text = args.address + ? tr("Set Breakpoint at 0x%1").arg(args.address, 0, 16) + : tr("Set Breakpoint at line %1").arg(lineNumber); QAction *act = new QAction(text, menu); act->setData(QVariant::fromValue(args)); + act->setEnabled(contextUsable); connect(act, SIGNAL(triggered()), SLOT(breakpointSetMarginActionTriggered())); menu->addAction(act); } // Run to, jump to line below in stopped state. - if (currentEngine()->state() == InferiorStopOk) { + if (currentEngine()->state() == InferiorStopOk && contextUsable) { menu->addSeparator(); - const QString runText = - DebuggerEngine::tr("Run to Line %1").arg(lineNumber); + const QString runText = args.address + ? DebuggerEngine::tr("Run to Address 0x%1").arg(args.address, 0, 16) + : DebuggerEngine::tr("Run to Line %1").arg(args.lineNumber); QAction *runToLineAction = new QAction(runText, menu); runToLineAction->setData(QVariant::fromValue(args)); connect(runToLineAction, SIGNAL(triggered()), SLOT(slotRunToLine())); menu->addAction(runToLineAction); if (currentEngine()->debuggerCapabilities() & JumpToLineCapability) { - const QString jumpText = - DebuggerEngine::tr("Jump to Line %1").arg(lineNumber); + const QString jumpText = args.address + ? DebuggerEngine::tr("Jump to Address 0x%1").arg(args.address, 0, 16) + : DebuggerEngine::tr("Jump to Line %1").arg(args.lineNumber); QAction *jumpToLineAction = new QAction(jumpText, menu); menu->addAction(runToLineAction); jumpToLineAction->setData(QVariant::fromValue(args)); diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index 625063e86df..6631926bf4b 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -132,6 +132,7 @@ static bool readStartElement(QXmlStreamReader &r, const char *name) return true; } +#if 0 static void debugMode(const QAbstractItemModel *model) { QDebug nospace = qDebug().nospace(); @@ -139,6 +140,7 @@ static void debugMode(const QAbstractItemModel *model) for (int r = 0; r < model->rowCount(); r++) nospace << '#' << r << ' ' << model->data(model->index(r, 0)).toString() << '\n'; } +#endif namespace Debugger { namespace Internal { diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index e627cb0f12a..f160af04692 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -2015,17 +2015,26 @@ void GdbEngine::executeNextI() postCommand("-exec-next-instruction", RunRequest, CB(handleExecuteContinue)); } -void GdbEngine::executeRunToLine(const QString &fileName, int lineNumber) +static QByteArray addressSpec(quint64 address) +{ + return "*0x" + QByteArray::number(address, 16); +} + +void GdbEngine::executeRunToLine(const ContextData &data) { QTC_ASSERT(state() == InferiorStopOk, qDebug() << state()); setTokenBarrier(); notifyInferiorRunRequested(); - showStatusMessage(tr("Run to line %1 requested...").arg(lineNumber), 5000); + showStatusMessage(tr("Run to line %1 requested...").arg(data.lineNumber), 5000); #if 1 - m_targetFrame.file = fileName; - m_targetFrame.line = lineNumber; - QByteArray loc = '"' + breakLocation(fileName).toLocal8Bit() + '"' + ':' - + QByteArray::number(lineNumber); + m_targetFrame.file = data.fileName; + m_targetFrame.line = data.lineNumber; + QByteArray loc; + if (data.address) + loc = addressSpec(data.address); + else + loc = '"' + breakLocation(data.fileName).toLocal8Bit() + '"' + ':' + + QByteArray::number(data.lineNumber); postCommand("tbreak " + loc); postCommand("continue", RunRequest, CB(handleExecuteRunToLine)); #else @@ -2046,15 +2055,15 @@ void GdbEngine::executeRunToFunction(const QString &functionName) continueInferiorInternal(); } -void GdbEngine::executeJumpToLine(const QString &fileName, int lineNumber) +void GdbEngine::executeJumpToLine(const ContextData &data) { QTC_ASSERT(state() == InferiorStopOk, qDebug() << state()); - StackFrame frame; - frame.file = fileName; - frame.line = lineNumber; -#if 1 - QByteArray loc = '"' + breakLocation(fileName).toLocal8Bit() + '"' + ':' - + QByteArray::number(lineNumber); + QByteArray loc; + if (data.address) + loc = addressSpec(data.address); + else + loc = '"' + breakLocation(data.fileName).toLocal8Bit() + '"' + ':' + + QByteArray::number(data.lineNumber); postCommand("tbreak " + loc); notifyInferiorRunRequested(); postCommand("jump " + loc, RunRequest, CB(handleExecuteJumpToLine)); @@ -2064,15 +2073,6 @@ void GdbEngine::executeJumpToLine(const QString &fileName, int lineNumber) // ~"run1 (argc=1, argv=0x7fffbf1f5538) at test1.cpp:242" // ~"242\t x *= 2;" // 23^done" - gotoLocation(frame); - //setBreakpoint(); - //postCommand("jump " + loc); -#else - gotoLocation(frame); - setBreakpoint(fileName, lineNumber); - notifyInferiorRunRequested(); - postCommand("jump " + loc, RunRequest); -#endif } void GdbEngine::executeReturn() @@ -2220,11 +2220,6 @@ QString GdbEngine::breakLocation(const QString &file) const return where; } -static QByteArray addressSpec(quint64 address) -{ - return "*0x" + QByteArray::number(address, 16); -} - QByteArray GdbEngine::breakpointLocation(BreakpointId id) { BreakHandler *handler = breakHandler(); diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 3f5936df0d9..68ab7e949a1 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -333,9 +333,9 @@ private: ////////// Inferior Management ////////// void interruptInferior(); void interruptInferiorTemporarily(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void executeReturn(); void handleExecuteContinue(const GdbResponse &response); diff --git a/src/plugins/debugger/lldb/guest/lldbengineguest.cpp b/src/plugins/debugger/lldb/guest/lldbengineguest.cpp index 502ff858ea7..bb8b1164bea 100644 --- a/src/plugins/debugger/lldb/guest/lldbengineguest.cpp +++ b/src/plugins/debugger/lldb/guest/lldbengineguest.cpp @@ -285,13 +285,12 @@ void LldbEngineGuest::interruptInferior() updateThreads(); } -void LldbEngineGuest::executeRunToLine(const QString &fileName, int lineNumber) +void LldbEngineGuest::executeRunToLine(const ContextData &data); { DEBUG_FUNC_ENTER; // TODO - Q_UNUSED(fileName); - Q_UNUSED(lineNumber); + Q_UNUSED(data); } void LldbEngineGuest::executeRunToFunction(const QString &functionName) @@ -301,13 +300,12 @@ void LldbEngineGuest::executeRunToFunction(const QString &functionName) // TODO Q_UNUSED(functionName); } -void LldbEngineGuest::executeJumpToLine(const QString &fileName, int lineNumber) +void LldbEngineGuest::executeJumpToLine(const ContextData &data); { DEBUG_FUNC_ENTER; // TODO - Q_UNUSED(fileName); - Q_UNUSED(lineNumber); + Q_UNUSED(data); } void LldbEngineGuest::activateFrame(qint64 token) diff --git a/src/plugins/debugger/lldb/guest/lldbengineguest.h b/src/plugins/debugger/lldb/guest/lldbengineguest.h index 3dc70caaf60..6e6f4b15d64 100644 --- a/src/plugins/debugger/lldb/guest/lldbengineguest.h +++ b/src/plugins/debugger/lldb/guest/lldbengineguest.h @@ -89,9 +89,9 @@ public: void executeNextI(); void continueInferior(); void interruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void activateFrame(qint64); void selectThread(qint64); void disassemble(quint64 pc); diff --git a/src/plugins/debugger/lldb/ipcengineguest.cpp b/src/plugins/debugger/lldb/ipcengineguest.cpp index 4586a60fc92..d96ab0db459 100644 --- a/src/plugins/debugger/lldb/ipcengineguest.cpp +++ b/src/plugins/debugger/lldb/ipcengineguest.cpp @@ -224,11 +224,10 @@ void IPCEngineGuest::rpcCallback(quint64 f, QByteArray payload) { QDataStream s(payload); SET_NATIVE_BYTE_ORDER(s); - QString fileName; - quint64 lineNumber; - s >> fileName; - s >> lineNumber; - executeRunToLine(fileName, lineNumber); + ContextData data; + s >> data.fileName; + s >> data.lineNumber; + executeRunToLine(data); } break; case IPCEngineHost::ExecuteRunToFunction: @@ -244,11 +243,10 @@ void IPCEngineGuest::rpcCallback(quint64 f, QByteArray payload) { QDataStream s(payload); SET_NATIVE_BYTE_ORDER(s); - QString fileName; - quint64 lineNumber; - s >> fileName; - s >> lineNumber; - executeJumpToLine(fileName, lineNumber); + ContextData data; + s >> data.fileName; + s >> data.lineNumber; + executeJumpToLine(data); } break; case IPCEngineHost::ActivateFrame: diff --git a/src/plugins/debugger/lldb/ipcengineguest.h b/src/plugins/debugger/lldb/ipcengineguest.h index 1268ec60a41..7f8ef9e9902 100644 --- a/src/plugins/debugger/lldb/ipcengineguest.h +++ b/src/plugins/debugger/lldb/ipcengineguest.h @@ -74,9 +74,9 @@ public: virtual void executeNextI() = 0; virtual void continueInferior() = 0; virtual void interruptInferior() = 0; - virtual void executeRunToLine(const QString &fileName, int lineNumber) = 0; + virtual void executeRunToLine(const ContextData &data) = 0; virtual void executeRunToFunction(const QString &functionName) = 0; - virtual void executeJumpToLine(const QString &fileName, int lineNumber) = 0; + virtual void executeJumpToLine(const ContextData &data) = 0; virtual void activateFrame(qint64 token) = 0; virtual void selectThread(qint64 token) = 0; virtual void disassemble(quint64 pc) = 0; diff --git a/src/plugins/debugger/lldb/ipcenginehost.cpp b/src/plugins/debugger/lldb/ipcenginehost.cpp index cffc1ce9fba..aaf555a9cc9 100644 --- a/src/plugins/debugger/lldb/ipcenginehost.cpp +++ b/src/plugins/debugger/lldb/ipcenginehost.cpp @@ -177,14 +177,14 @@ void IPCEngineHost::interruptInferior() rpcCall(InterruptInferior); } -void IPCEngineHost::executeRunToLine(const QString &fileName, int lineNumber) +void IPCEngineHost::executeRunToLine(const ContextData &data) { QByteArray p; { QDataStream s(&p, QIODevice::WriteOnly); SET_NATIVE_BYTE_ORDER(s); - s << fileName; - s << quint64(lineNumber); + s << data.fileName; + s << quint64(data.lineNumber); } rpcCall(ExecuteRunToLine, p); } @@ -200,14 +200,14 @@ void IPCEngineHost::executeRunToFunction(const QString &functionName) rpcCall(ExecuteRunToFunction, p); } -void IPCEngineHost::executeJumpToLine(const QString &fileName, int lineNumber) +void IPCEngineHost::executeJumpToLine(const ContextData &data) { QByteArray p; { QDataStream s(&p, QIODevice::WriteOnly); SET_NATIVE_BYTE_ORDER(s); - s << fileName; - s << quint64(lineNumber); + s << data.fileName; + s << quint64(data.lineNumber); } rpcCall(ExecuteJumpToLine, p); } diff --git a/src/plugins/debugger/lldb/ipcenginehost.h b/src/plugins/debugger/lldb/ipcenginehost.h index e20956bf57a..3661598453b 100644 --- a/src/plugins/debugger/lldb/ipcenginehost.h +++ b/src/plugins/debugger/lldb/ipcenginehost.h @@ -104,9 +104,9 @@ public: void executeNextI(); void continueInferior(); void interruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void activateFrame(int index); void selectThread(int index); void fetchDisassembler(DisassemblerAgent *); diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index 46c8a5eed7f..8f1774a65bb 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -280,10 +280,9 @@ void PdbEngine::continueInferior() postCommand("continue", CB(handleUpdateAll)); } -void PdbEngine::executeRunToLine(const QString &fileName, int lineNumber) +void PdbEngine::executeRunToLine(const ContextData &data) { - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) SDEBUG("FIXME: PdbEngine::runToLineExec()"); } @@ -293,10 +292,9 @@ void PdbEngine::executeRunToFunction(const QString &functionName) XSDEBUG("FIXME: PdbEngine::runToFunctionExec()"); } -void PdbEngine::executeJumpToLine(const QString &fileName, int lineNumber) +void PdbEngine::executeJumpToLine(const ContextData &data) { - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) XSDEBUG("FIXME: PdbEngine::jumpToLineExec()"); } diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h index fcff5d32e08..774026e2b27 100644 --- a/src/plugins/debugger/pdb/pdbengine.h +++ b/src/plugins/debugger/pdb/pdbengine.h @@ -85,9 +85,9 @@ private: void continueInferior(); void interruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void activateFrame(int index); void selectThread(int index); diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index f6c2f610989..a3e1aa06413 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -384,9 +384,9 @@ void QmlCppEngine::requestInterruptInferior() d->m_cppEngine->requestInterruptInferior(); } -void QmlCppEngine::executeRunToLine(const QString &fileName, int lineNumber) +void QmlCppEngine::executeRunToLine(const ContextData &data) { - d->m_activeEngine->executeRunToLine(fileName, lineNumber); + d->m_activeEngine->executeRunToLine(data); } void QmlCppEngine::executeRunToFunction(const QString &functionName) @@ -394,9 +394,9 @@ void QmlCppEngine::executeRunToFunction(const QString &functionName) d->m_activeEngine->executeRunToFunction(functionName); } -void QmlCppEngine::executeJumpToLine(const QString &fileName, int lineNumber) +void QmlCppEngine::executeJumpToLine(const ContextData &data) { - d->m_activeEngine->executeJumpToLine(fileName, lineNumber); + d->m_activeEngine->executeJumpToLine(data); } void QmlCppEngine::executeDebuggerCommand(const QString &command) diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h index a7d2ba247c3..1ba06f8aab1 100644 --- a/src/plugins/debugger/qml/qmlcppengine.h +++ b/src/plugins/debugger/qml/qmlcppengine.h @@ -103,9 +103,9 @@ protected: void interruptInferior(); void requestInterruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void executeDebuggerCommand(const QString &command); void setupEngine(); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 5faf4b1f440..ddebc04812d 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -449,10 +449,9 @@ void QmlEngine::executeNextI() SDEBUG("QmlEngine::executeNextI()"); } -void QmlEngine::executeRunToLine(const QString &fileName, int lineNumber) +void QmlEngine::executeRunToLine(const ContextData &data) { - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) SDEBUG("FIXME: QmlEngine::executeRunToLine()"); } @@ -462,10 +461,9 @@ void QmlEngine::executeRunToFunction(const QString &functionName) XSDEBUG("FIXME: QmlEngine::executeRunToFunction()"); } -void QmlEngine::executeJumpToLine(const QString &fileName, int lineNumber) +void QmlEngine::executeJumpToLine(const ContextData &data) { - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) XSDEBUG("FIXME: QmlEngine::executeJumpToLine()"); } diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 055594cd913..b9eb28fb03a 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -86,9 +86,9 @@ private: void continueInferior(); void interruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void activateFrame(int index); void selectThread(int index); diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp index 888514092ae..0a423d13fe6 100644 --- a/src/plugins/debugger/script/scriptengine.cpp +++ b/src/plugins/debugger/script/scriptengine.cpp @@ -414,12 +414,11 @@ void ScriptEngine::executeNextI() m_stopOnNextLine = true; } -void ScriptEngine::executeRunToLine(const QString &fileName, int lineNumber) +void ScriptEngine::executeRunToLine(const ContextData &data) { QTC_ASSERT(state() == InferiorStopOk, qDebug() << state()); notifyInferiorRunRequested(); - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) SDEBUG("FIXME: ScriptEngine::runToLineExec()"); } @@ -431,12 +430,11 @@ void ScriptEngine::executeRunToFunction(const QString &functionName) XSDEBUG("FIXME: ScriptEngine::runToFunctionExec()"); } -void ScriptEngine::executeJumpToLine(const QString &fileName, int lineNumber) +void ScriptEngine::executeJumpToLine(const ContextData &data) { QTC_ASSERT(state() == InferiorStopOk, qDebug() << state()); notifyInferiorRunRequested(); - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) XSDEBUG("FIXME: ScriptEngine::jumpToLineExec()"); } diff --git a/src/plugins/debugger/script/scriptengine.h b/src/plugins/debugger/script/scriptengine.h index 8136c9a23bf..2c46c74960f 100644 --- a/src/plugins/debugger/script/scriptengine.h +++ b/src/plugins/debugger/script/scriptengine.h @@ -84,9 +84,9 @@ private: void continueInferior(); void interruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void activateFrame(int index); void selectThread(int index); diff --git a/src/plugins/debugger/tcf/tcfengine.cpp b/src/plugins/debugger/tcf/tcfengine.cpp index b63aa6e3c2e..f7c8c94a134 100644 --- a/src/plugins/debugger/tcf/tcfengine.cpp +++ b/src/plugins/debugger/tcf/tcfengine.cpp @@ -269,10 +269,9 @@ void TcfEngine::executeNextI() //SDEBUG("TcfEngine::executeNextI()"); } -void TcfEngine::executeRunToLine(const QString &fileName, int lineNumber) +void TcfEngine::executeRunToLine(const ContextData &data) { - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) SDEBUG("FIXME: TcfEngine::executeRunToLine()"); } @@ -282,10 +281,9 @@ void TcfEngine::executeRunToFunction(const QString &functionName) XSDEBUG("FIXME: TcfEngine::executeRunToFunction()"); } -void TcfEngine::executeJumpToLine(const QString &fileName, int lineNumber) +void TcfEngine::executeJumpToLine(const ContextData &data) { - Q_UNUSED(fileName) - Q_UNUSED(lineNumber) + Q_UNUSED(data) XSDEBUG("FIXME: TcfEngine::executeJumpToLine()"); } diff --git a/src/plugins/debugger/tcf/tcfengine.h b/src/plugins/debugger/tcf/tcfengine.h index 56b3fbb1517..f2d96c73f31 100644 --- a/src/plugins/debugger/tcf/tcfengine.h +++ b/src/plugins/debugger/tcf/tcfengine.h @@ -88,9 +88,9 @@ private: void continueInferior(); void interruptInferior(); - void executeRunToLine(const QString &fileName, int lineNumber); + void executeRunToLine(const ContextData &data); void executeRunToFunction(const QString &functionName); - void executeJumpToLine(const QString &fileName, int lineNumber); + void executeJumpToLine(const ContextData &data); void activateFrame(int index); void selectThread(int index); diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index 9d10cb372e9..5a5ba5fb6db 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -686,14 +686,6 @@ QString decodeData(const QByteArray &ba, int encoding) return QCoreApplication::translate("Debugger", ""); } -TextEditor::ITextEditor *currentTextEditor() -{ - if (const Core::EditorManager *editorManager = Core::EditorManager::instance()) - if (Core::IEditor *editor = editorManager->currentEditor()) - return qobject_cast(editor); - return 0; -} - // Editor tooltip support bool isCppEditor(Core::IEditor *editor) { @@ -708,24 +700,6 @@ bool isCppEditor(Core::IEditor *editor) || mimeType == OBJECTIVE_CPP_SOURCE_MIMETYPE; } -bool currentTextEditorPosition(QString *fileNameIn /* = 0 */, - int *lineNumberIn /* = 0 */) -{ - QString fileName; - int lineNumber = 0; - if (TextEditor::ITextEditor *textEditor = currentTextEditor()) { - if (const Core::IFile *file = textEditor->file()) { - fileName = file->fileName(); - lineNumber = textEditor->currentLine(); - } - } - if (fileNameIn) - *fileNameIn = fileName; - if (lineNumberIn) - *lineNumberIn = lineNumber; - return !fileName.isEmpty(); -} - // Return the Cpp expression, and, if desired, the function QString cppExpressionAt(TextEditor::ITextEditor *editor, int pos, int *line, int *column, QString *function /* = 0 */) diff --git a/src/plugins/debugger/watchutils.h b/src/plugins/debugger/watchutils.h index 5985158a227..c0405bda90f 100644 --- a/src/plugins/debugger/watchutils.h +++ b/src/plugins/debugger/watchutils.h @@ -96,10 +96,6 @@ QString quoteUnprintableLatin1(const QByteArray &ba); bool isCppEditor(Core::IEditor *editor); QString cppExpressionAt(TextEditor::ITextEditor *editor, int pos, int *line, int *column, QString *function = 0); -// Editor helpers -TextEditor::ITextEditor *currentTextEditor(); -bool currentTextEditorPosition(QString *fileNameIn = 0, - int *lineNumberIn = 0); // Decode string data as returned by the dumper helpers. QString decodeData(const QByteArray &baIn, int encoding);