forked from qt-creator/qt-creator
Debugger: Make LLDB startup failures more verbose
Fixes: QTCREATORBUG-19612 Change-Id: I7c8ebe3ec734265c8df8a684ccd6bb8991ea8390 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -2275,3 +2275,10 @@ def __lldb_init_module(debugger, internal_dict):
|
||||
if not __name__ == 'qt':
|
||||
# Make available under global 'qt' name for consistency
|
||||
internal_dict['qt'] = internal_dict[__name__]
|
||||
|
||||
|
||||
if __name__ == "lldbbridge":
|
||||
try:
|
||||
theDumper = Dumper()
|
||||
except Exception as error:
|
||||
print('@\nstate="enginesetupfailed",error="{}"@\n'.format(error))
|
||||
|
@@ -191,6 +191,11 @@ void LldbEngine::abortDebuggerProcess()
|
||||
notifyEngineShutdownFinished();
|
||||
}
|
||||
|
||||
static QString adapterStartFailed()
|
||||
{
|
||||
return LldbEngine::tr("Adapter start failed.");
|
||||
}
|
||||
|
||||
void LldbEngine::setupEngine()
|
||||
{
|
||||
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state());
|
||||
@@ -211,7 +216,7 @@ void LldbEngine::setupEngine()
|
||||
notifyEngineSetupFailed();
|
||||
showMessage("ADAPTER START FAILED");
|
||||
if (!msg.isEmpty())
|
||||
ICore::showWarningWithOptions(tr("Adapter start failed."), msg);
|
||||
ICore::showWarningWithOptions(adapterStartFailed(), msg);
|
||||
return;
|
||||
}
|
||||
m_lldbProc.waitForReadyRead(1000);
|
||||
@@ -222,9 +227,8 @@ void LldbEngine::setupEngine()
|
||||
ICore::resourcePath().toLocal8Bit() + "/debugger/";
|
||||
|
||||
m_lldbProc.write("script sys.path.insert(1, '" + dumperSourcePath + "')\n");
|
||||
// This triggers reportState("enginesetupok") or "enginesetupfailed":
|
||||
m_lldbProc.write("script from lldbbridge import *\n");
|
||||
m_lldbProc.write("script print(dir())\n");
|
||||
m_lldbProc.write("script theDumper = Dumper()\n"); // This triggers reportState("enginesetupok")
|
||||
|
||||
QString commands = nativeStartupCommands();
|
||||
if (!commands.isEmpty())
|
||||
@@ -384,7 +388,7 @@ void LldbEngine::handleResponse(const QString &response)
|
||||
cmd.callback(response);
|
||||
}
|
||||
} else if (name == "state")
|
||||
handleStateNotification(item);
|
||||
handleStateNotification(all);
|
||||
else if (name == "location")
|
||||
handleLocationNotification(item);
|
||||
else if (name == "output")
|
||||
@@ -830,9 +834,9 @@ void LldbEngine::readLldbStandardOutput()
|
||||
}
|
||||
}
|
||||
|
||||
void LldbEngine::handleStateNotification(const GdbMi &reportedState)
|
||||
void LldbEngine::handleStateNotification(const GdbMi &item)
|
||||
{
|
||||
QString newState = reportedState.data();
|
||||
const QString newState = item["state"].data();
|
||||
if (newState == "running")
|
||||
notifyInferiorRunOk();
|
||||
else if (newState == "inferiorrunfailed")
|
||||
@@ -867,9 +871,11 @@ void LldbEngine::handleStateNotification(const GdbMi &reportedState)
|
||||
notifyInferiorIll();
|
||||
else if (newState == "enginesetupok")
|
||||
notifyEngineSetupOk();
|
||||
else if (newState == "enginesetupfailed")
|
||||
else if (newState == "enginesetupfailed") {
|
||||
Core::AsynchronousMessageBox::critical(adapterStartFailed(),
|
||||
item["error"].data());
|
||||
notifyEngineSetupFailed();
|
||||
else if (newState == "enginerunfailed")
|
||||
} else if (newState == "enginerunfailed")
|
||||
notifyEngineRunFailed();
|
||||
else if (newState == "enginerunandinferiorrunok") {
|
||||
if (runParameters().continueAfterAttach)
|
||||
|
@@ -117,7 +117,7 @@ private:
|
||||
void readLldbStandardOutput();
|
||||
void readLldbStandardError();
|
||||
|
||||
void handleStateNotification(const GdbMi &state);
|
||||
void handleStateNotification(const GdbMi &item);
|
||||
void handleLocationNotification(const GdbMi &location);
|
||||
void handleOutputNotification(const GdbMi &output);
|
||||
|
||||
|
Reference in New Issue
Block a user