From 846d89811a72f96909ad137fb973983f568c3643 Mon Sep 17 00:00:00 2001 From: Filipe Azevedo Date: Tue, 19 Sep 2017 12:37:56 +0200 Subject: Fix unstoppable debugger For some reason sometimes a user stop request with lldb can trigger a spontaneous stop, avoiding the debugger to stop correctly. This change fix the issue by emitting the correct states from lldbbridge.py. Change-Id: Ib8a2f4875824f4fff426b2d5e0fc4a79ce48c68e Reviewed-by: hjk --- share/qtcreator/debugger/lldbbridge.py | 6 ++---- src/plugins/debugger/lldb/lldbengine.cpp | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 9c85907f9a..968572bb4d 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1240,9 +1240,7 @@ class Dumper(DumperBase): if not skipEventReporting: self.eventState = state if state == lldb.eStateExited: - if self.isShuttingDown_: - self.reportState("inferiorshutdownok") - else: + if not self.isShuttingDown_: self.reportState("inferiorexited") self.report('exited={status="%s",desc="%s"}' % (self.process.GetExitStatus(), self.process.GetExitDescription())) @@ -1272,7 +1270,7 @@ class Dumper(DumperBase): return if self.isInterrupting_: self.isInterrupting_ = False - self.reportState("stopped") + self.reportState("inferiorstopok") elif self.ignoreStops > 0: self.ignoreStops -= 1 self.process.Continue() diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index a844d98248..256f3ce4ee 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -910,6 +910,8 @@ void LldbEngine::handleStateNotification(const GdbMi &reportedState) } } else if (newState == "inferiorstopok") { notifyInferiorStopOk(); + if (!isDying()) + updateAll(); } else if (newState == "inferiorstopfailed") notifyInferiorStopFailed(); else if (newState == "inferiorill") -- cgit v1.2.1