summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe Azevedo <filipe.azevedo@kdab.com>2017-09-19 12:37:56 +0200
committerhjk <hjk@qt.io>2017-09-20 09:49:53 +0000
commit846d89811a72f96909ad137fb973983f568c3643 (patch)
tree880c31f4701287cd3725f089b689a426d648265a
parent76006a1353f1282a940bf80a523b93ead7beae93 (diff)
downloadqt-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.py6
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp2
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")