From d57bb243542456be10f6e6c00a65166161f0f798 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 2 Jun 2014 17:05:52 +0200 Subject: [PATCH] Debugger: Better fall back for LLDB without remote support Change-Id: I517052bb795674d4beda05e3909dc05afc99bfe3 Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 16 ++++++++++++++++ share/qtcreator/debugger/lldbbridge.py | 9 +++++---- src/plugins/debugger/debuggerconstants.h | 1 + src/plugins/debugger/lldb/lldbengine.cpp | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index bd05d36d4ad..7a3277e6bed 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -43,6 +43,22 @@ else: verbosity = 0 verbosity = 1 +# Debugger start modes. Keep in sync with DebuggerStartMode in debuggerconstants.h +NoStartMode, \ +StartInternal, \ +StartExternal, \ +AttachExternal, \ +AttachCrashedExternal, \ +AttachCore, \ +AttachToRemoteServer, \ +AttachToRemoteProcess, \ +LoadRemoteCore, \ +StartRemoteProcess, \ +StartRemoteGdb, \ +StartRemoteEngine \ + = range(0, 12) + + # Known special formats. Keep in sync with DisplayFormat in watchhandler.h KnownDumperFormatBase, \ Latin1StringFormat, \ diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index bced674e6b3..1b26c35d70d 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -682,12 +682,13 @@ class Dumper(DumperBase): # and later detects that it did stop after all, so it is be # better to mirror that and wait for the spontaneous stop. self.reportState("enginerunandinferiorrunok") - elif len(self.remoteChannel_) > 0: + elif self.startMode_ == AttachToRemoteServer: self.process = self.target.ConnectRemote( - self.debugger.GetListener(), - self.remoteChannel_, None, error) + self.debugger.GetListener(), + self.remoteChannel_, None, error) if not error.Success(): - self.reportState("inferiorrunfailed") + self.reportError(error) + self.reportState("enginerunfailed") return # Even if it stops it seems that LLDB assumes it is running # and later detects that it did stop after all, so it is be diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h index cd3eb25159e..188dcaa7b73 100644 --- a/src/plugins/debugger/debuggerconstants.h +++ b/src/plugins/debugger/debuggerconstants.h @@ -111,6 +111,7 @@ enum DebuggerState DebuggerFinished }; +// Keep in sync with dumper.py enum DebuggerStartMode { NoStartMode, diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 6d343556fa3..c992fa740c1 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -284,6 +284,7 @@ void LldbEngine::setupInferior() cmd.arg("executable", executable); cmd.arg("breakOnMain", sp.breakOnMain); cmd.arg("useTerminal", sp.useTerminal); + cmd.arg("startMode", sp.startMode); cmd.beginList("processArgs"); foreach (const QString &arg, args.toUnixArgs()) @@ -298,7 +299,6 @@ void LldbEngine::setupInferior() ? QString::fromLatin1("Attaching to %1 (%2)").arg(attachedPID).arg(attachedMainThreadID) : QString::fromLatin1("Attaching to %1").arg(attachedPID); showMessage(msg, LogMisc); - cmd.arg("startMode", AttachExternal); cmd.arg("attachPid", attachedPID); } else {