diff options
author | Filipe Azevedo <filipe.azevedo@kdab.com> | 2017-09-19 12:37:56 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-09-20 09:49:53 +0000 |
commit | 846d89811a72f96909ad137fb973983f568c3643 (patch) | |
tree | 880c31f4701287cd3725f089b689a426d648265a | |
parent | 76006a1353f1282a940bf80a523b93ead7beae93 (diff) | |
download | qt-creator-846d89811a72f96909ad137fb973983f568c3643.tar.gz |
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 <hjk@qt.io>
-rw-r--r-- | share/qtcreator/debugger/lldbbridge.py | 6 | ||||
-rw-r--r-- | 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") |