From 8b847bcf196f12c6a5c6d7101a94fca9dc30c95f Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 4 Jan 2016 16:54:50 +0100 Subject: [PATCH] Debugger: Do not abort debugger on "Engine Ill" for coredump Even without the stack, the user can find interesting stuff by exploring the memory, globals etc. Change-Id: I867d26b09a45425d97c4f3ef6d0528074c25e75f Reviewed-by: Orgad Shaneh Reviewed-by: hjk --- src/plugins/debugger/gdb/coregdbadapter.cpp | 24 +++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp index 8987b9e879f..40f46c80b68 100644 --- a/src/plugins/debugger/gdb/coregdbadapter.cpp +++ b/src/plugins/debugger/gdb/coregdbadapter.cpp @@ -244,18 +244,20 @@ void GdbCoreEngine::handleTargetCore(const DebuggerResponse &response) { CHECK_STATE(EngineRunRequested); notifyEngineRunOkAndInferiorUnrunnable(); - if (response.resultClass == ResultDone) { - showMessage(tr("Attached to core."), StatusBar); - // Due to the auto-solib-add off setting, we don't have any - // symbols yet. Load them in order of importance. - reloadStack(); - reloadModulesInternal(); - runCommand({"p 5", NoFlags, CB(handleRoundTrip)}); - return; + showMessage(tr("Attached to core."), StatusBar); + if (response.resultClass == ResultError) { + // We'll accept any kind of error e.g. &"Cannot access memory at address 0x2abc2a24\n" + // Even without the stack, the user can find interesting stuff by exploring + // the memory, globals etc. + showStatusMessage(tr("Attach to core \"%1\" failed:").arg(runParameters().coreFile) + + QLatin1Char('\n') + QString::fromLocal8Bit(response.data["msg"].data()) + + QLatin1Char('\n') + tr("Continuing nevertheless.")); } - showStatusMessage(tr("Attach to core \"%1\" failed:").arg(runParameters().coreFile) - + QLatin1Char('\n') + QString::fromLocal8Bit(response.data["msg"].data())); - notifyEngineIll(); + // Due to the auto-solib-add off setting, we don't have any + // symbols yet. Load them in order of importance. + reloadStack(); + reloadModulesInternal(); + runCommand({"p 5", NoFlags, CB(handleRoundTrip)}); } void GdbCoreEngine::handleRoundTrip(const DebuggerResponse &response)