aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/debuggerplugin.cpp
diff options
context:
space:
mode:
authorEike Ziller <[email protected]>2018-03-13 11:25:38 +0100
committerEike Ziller <[email protected]>2018-03-13 11:25:38 +0100
commit0b10ecc718accd8c4d472ba8f3ed5ea6f1856e51 (patch)
tree67f63d2b4aa20195910728659cd3c0ba2cb580eb /src/plugins/debugger/debuggerplugin.cpp
parentf1985df55dfa81f184c9d29df6cfbb353bf77ffc (diff)
parent0bcc983cdbb74baebccfdb09f7d2ffb22ebf950d (diff)
Merge remote-tracking branch 'origin/4.6'
Conflicts: src/plugins/cmakeprojectmanager/cmakeproject.h src/plugins/debugger/debuggerplugin.cpp src/plugins/ios/iosrunfactories.cpp src/plugins/nim/project/nimproject.h src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp src/plugins/qmlprojectmanager/qmlproject.h src/plugins/qnx/qnxrunconfigurationfactory.cpp src/plugins/qtsupport/exampleslistmodel.cpp src/plugins/winrt/winrtrunfactories.cpp Change-Id: Ib029fdbaa65270426332f5edd6e90264be5fb539
Diffstat (limited to 'src/plugins/debugger/debuggerplugin.cpp')
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index de8f1ce0ed3..2d3adbc7dc3 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -94,6 +94,7 @@
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/devicesupport/deviceprocessesdialog.h>
#include <projectexplorer/devicesupport/deviceprocesslist.h>
+#include <projectexplorer/itaskhandler.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorericons.h>
@@ -571,6 +572,42 @@ static Kit *findUniversalCdbKit()
///////////////////////////////////////////////////////////////////////
//
+// Debuginfo Taskhandler
+//
+///////////////////////////////////////////////////////////////////////
+
+class DebugInfoTaskHandler : public ITaskHandler
+{
+public:
+ bool canHandle(const Task &task) const final
+ {
+ return m_debugInfoTasks.contains(task.taskId);
+ }
+
+ void handle(const Task &task) final
+ {
+ QString cmd = m_debugInfoTasks.value(task.taskId);
+ QProcess::startDetached(cmd);
+ }
+
+ void addTask(unsigned id, const QString &cmd)
+ {
+ m_debugInfoTasks[id] = cmd;
+ }
+
+ QAction *createAction(QObject *parent) const final
+ {
+ QAction *action = new QAction(DebuggerPlugin::tr("Install &Debug Information"), parent);
+ action->setToolTip(DebuggerPlugin::tr("Tries to install missing debug information."));
+ return action;
+ }
+
+private:
+ QHash<unsigned, QString> m_debugInfoTasks;
+};
+
+///////////////////////////////////////////////////////////////////////
+//
// DebuggerPluginPrivate
//
///////////////////////////////////////////////////////////////////////
@@ -1022,6 +1059,8 @@ public:
DebuggerItemManager m_debuggerItemManager;
QList<IOptionsPage *> m_optionPages;
IContext m_debugModeContext;
+
+ DebugInfoTaskHandler m_debugInfoTaskHandler;
};
DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin)
@@ -2947,6 +2986,11 @@ QMessageBox *showMessageBox(int icon, const QString &title,
return mb;
}
+void addDebugInfoTask(unsigned id, const QString &cmd)
+{
+ dd->m_debugInfoTaskHandler.addTask(id, cmd);
+}
+
bool isReverseDebuggingEnabled()
{
static bool enabled = qEnvironmentVariableIsSet("QTC_DEBUGGER_ENABLE_REVERSE");