aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
diff options
context:
space:
mode:
authorhjk <hjk@theqtcompany.com>2016-06-13 16:04:19 +0200
committerhjk <hjk@theqtcompany.com>2016-06-14 06:26:03 +0000
commit779f17258104daa6d14ee5b2eedaf5e39db8a5c4 (patch)
tree6705744904623a9fb9bfa4091c57aba5b71a35cd /src/plugins/debugger/gdb/remotegdbserveradapter.cpp
parent1284e952951c1a4231623160025f7d8d753603e0 (diff)
Debugger: Add a message box with a hint to fix missing executables
Change-Id: Ie193a88cdc58f6f6e09178c601a227cc17bf10de Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/debugger/gdb/remotegdbserveradapter.cpp')
-rw-r--r--src/plugins/debugger/gdb/remotegdbserveradapter.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index 3ebb25d983..d9806d19da 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -37,7 +37,9 @@
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
+#include <QAbstractButton>
#include <QFileInfo>
+#include <QMessageBox>
using namespace Utils;
@@ -303,9 +305,28 @@ void GdbRemoteServerEngine::handleTargetExtendedRemote(const DebuggerResponse &r
// gdb server will stop the remote application itself.
runCommand({"attach " + QString::number(runParameters().attachPID),
NoFlags, CB(handleTargetExtendedAttach)});
- } else {
+ } else if (!runParameters().inferior.executable.isEmpty()) {
runCommand({"-gdb-set remote exec-file " + runParameters().inferior.executable,
NoFlags, CB(handleTargetExtendedAttach)});
+ } else {
+ const QString title = tr("No Remote Executable or Process ID Specified");
+ const QString msg = tr(
+ "No remote executable could be determined from your build system files.<p>"
+ "In case you use qmake, consider adding<p>"
+ "&nbsp;&nbsp;&nbsp;&nbsp;target.path = /tmp/your_executable # path on device<br>"
+ "&nbsp;&nbsp;&nbsp;&nbsp;INSTALLS += target</p>"
+ "to your .pro file.");
+ QMessageBox *mb = showMessageBox(QMessageBox::Critical, title, msg,
+ QMessageBox::Ok | QMessageBox::Cancel);
+ mb->button(QMessageBox::Cancel)->setText(tr("Continue Debugging"));
+ mb->button(QMessageBox::Ok)->setText(tr("Stop Debugging"));
+ if (mb->exec() == QMessageBox::Ok) {
+ showMessage("KILLING DEBUGGER AS REQUESTED BY USER");
+ notifyInferiorSetupFailed(title);
+ } else {
+ showMessage("CONTINUE DEBUGGER AS REQUESTED BY USER");
+ handleInferiorPrepared(); // This will likely fail.
+ }
}
} else {
notifyInferiorSetupFailed(msgConnectRemoteServerFailed(response.data["msg"].data()));