From f3ecf032b603144ba5aa801c0199081a837d66c3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 27 Nov 2013 08:06:15 +0100 Subject: [PATCH] Debugger: Adding functionality to create full backtrace with cdb. Task-number: QTCREATORBUG-10916 Change-Id: Ie2675f1bdc1f31679aefac32053cd1c8dd76d2d5 Reviewed-by: Friedemann Kleint --- src/plugins/debugger/cdb/cdbengine.cpp | 13 +++++++++++++ src/plugins/debugger/cdb/cdbengine.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index e57b0b189e6..a596dea1c0f 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -365,6 +365,8 @@ CdbEngine::CdbEngine(const DebuggerStartParameters &sp) : this, SLOT(operateByInstructionTriggered(bool))); connect(debuggerCore()->action(VerboseLog), SIGNAL(triggered(bool)), this, SLOT(verboseLogTriggered(bool))); + connect(debuggerCore()->action(CreateFullBacktrace), SIGNAL(triggered()), + this, SLOT(createFullBacktrace())); setObjectName(QLatin1String("CdbEngine")); connect(&m_process, SIGNAL(finished(int)), this, SLOT(processFinished())); connect(&m_process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError())); @@ -597,6 +599,16 @@ void CdbEngine::consoleStubExited() { } +void CdbEngine::createFullBacktrace() +{ + postBuiltinCommand("~*kp", 0, &CdbEngine::handleCreateFullBackTrace); +} + +void CdbEngine::handleCreateFullBackTrace(const CdbEngine::CdbBuiltinCommandPtr &cmd) +{ + debuggerCore()->openTextEditor(QLatin1String("Backtrace $"), QLatin1String(cmd->joinedReply())); +} + void CdbEngine::setupEngine() { if (debug) @@ -1101,6 +1113,7 @@ bool CdbEngine::hasCapability(unsigned cap) const |BreakOnThrowAndCatchCapability // Sort-of: Can break on throw(). |BreakConditionCapability|TracePointCapability |BreakModuleCapability + |CreateFullBacktraceCapability |OperateByInstructionCapability |RunToLineCapability |MemoryAddressCapability); diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 4d8e9d12146..f9b4962f2cf 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -156,6 +156,8 @@ private slots: void consoleStubProcessStarted(); void consoleStubExited(); + void createFullBacktrace(); + void handleDoInterruptInferior(const QString &errorMessage); private: @@ -227,6 +229,7 @@ private: void ensureUsing32BitStackInWow64(const CdbBuiltinCommandPtr &cmd); void handleSwitchWow64Stack(const CdbBuiltinCommandPtr &cmd); void jumpToAddress(quint64 address); + void handleCreateFullBackTrace(const CdbBuiltinCommandPtr &cmd); // Extension commands void handleThreads(const CdbExtensionCommandPtr &);