From 60f5b5afc58c73a57415219433848c78cc9f97c9 Mon Sep 17 00:00:00 2001 From: hjk <hjk121@nokiamail.com> Date: Mon, 2 Jun 2014 16:45:12 +0200 Subject: [PATCH] Debugger: Fail more gracefully on "ill" LLDB engines Less need to use the hard Debug->Abort Change-Id: Ib019792063924549ace58a63ccef994dbfaa00dc Reviewed-by: hjk <hjk121@nokiamail.com> --- share/qtcreator/debugger/lldbbridge.py | 11 ++++++++++- src/plugins/debugger/lldb/lldbengine.cpp | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 3c9a8bd964..bced674e6b 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1195,6 +1195,9 @@ class Dumper(DumperBase): else: error = self.process.Continue() self.reportError(error) + # Happens when attaching to GDBserver. + if not error.Success(): + self.reportState("inferiorill") def quitDebugger(self, _ = None): self.reportState("inferiorshutdownrequested") @@ -1451,7 +1454,13 @@ class Dumper(DumperBase): def shutdownInferior(self, _ = None): self.isShuttingDown_ = True - self.process.Kill() + if self.process is None: + self.reportState("inferiorshutdownok") + else: + state = self.process.GetState() + if state == lldb.eStateStopped: + self.process.Kill() + self.reportState("inferiorshutdownok") def quit(self, _ = None): self.reportState("engineshutdownok") diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 696ef9811f..6d343556fa 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -1216,6 +1216,8 @@ void LldbEngine::refreshState(const GdbMi &reportedState) notifyInferiorStopOk(); else if (newState == "inferiorstopfailed") notifyInferiorStopFailed(); + else if (newState == "inferiorill") + notifyInferiorIll(); else if (newState == "enginesetupok") notifyEngineSetupOk(); else if (newState == "enginesetupfailed") -- GitLab