From a12ba22ed3869006e95f8fda9f9616e95bca27ee Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Wed, 7 Sep 2011 15:20:04 +0200
Subject: [PATCH] debugger: robustness when stepping through inaccessible
 memory

Change-Id: I9cafda99986b653872e57f8223a0fe4621fd5136
Reviewed-on: http://codereview.qt-project.org/4478
Reviewed-by: hjk <qthjk@ovi.com>
---
 src/plugins/debugger/gdb/gdbengine.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 2f2479d4f1f..5a44d0767d5 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1790,6 +1790,8 @@ void GdbEngine::handleExecuteContinue(const GdbResponse &response)
         QTC_ASSERT(state() == InferiorStopOk, qDebug() << state());
         showStatusMessage(tr("Stopped."), 5000);
         reloadStack(true);
+    } else if (msg.startsWith("Cannot access memory at address")) {
+        // Happens on single step on ARM prolog and epilogs.
     } else if (msg.startsWith("\"finish\" not meaningful in the outermost frame")) {
         notifyInferiorRunFailed();
         if (isDying())
@@ -2075,7 +2077,8 @@ void GdbEngine::handleExecuteStep(const GdbResponse &response)
     }
     QByteArray msg = response.data.findChild("msg").data();
     if (msg.startsWith("Cannot find bounds of current function")
-            || msg.contains("Error accessing memory address")) {
+            || msg.contains("Error accessing memory address")
+            || msg.startsWith("Cannot access memory at address")) {
         // On S40: "40^error,msg="Warning:\nCannot insert breakpoint -39.\n"
         //" Error accessing memory address 0x11673fc: Input/output error.\n"
         notifyInferiorRunFailed();
-- 
GitLab