Debugger: Fix debugging using older lldb (less/equal 310)

Task-number: QTCREATORBUG-14033
Change-Id: I5b65de442eca525ceffadd4d4667283a276b6af8
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
Christian Stenger
2015-03-09 13:30:22 +01:00
committed by hjk
parent 31b2ac85f4
commit 59640aa7aa
2 changed files with 22 additions and 5 deletions

View File

@@ -266,8 +266,15 @@ void LldbEngine::startLldb()
showMessage(_("ADAPTER START FAILED")); showMessage(_("ADAPTER START FAILED"));
if (!msg.isEmpty()) if (!msg.isEmpty())
ICore::showWarningWithOptions(tr("Adapter start failed."), msg); ICore::showWarningWithOptions(tr("Adapter start failed."), msg);
return;
}
m_lldbProc.waitForReadyRead(1000);
m_lldbProc.write("sc print('@\\nlldbstartupok@\\n')\n");
} }
// FIXME: splitting of startLldb() necessary to support LLDB <= 310 - revert asap
void LldbEngine::startLldbStage2()
{
showMessage(_("ADAPTER STARTED")); showMessage(_("ADAPTER STARTED"));
showStatusMessage(tr("Setting up inferior...")); showStatusMessage(tr("Setting up inferior..."));
@@ -282,8 +289,6 @@ void LldbEngine::startLldb()
void LldbEngine::setupInferior() void LldbEngine::setupInferior()
{ {
const DebuggerStartParameters &sp = startParameters();
const QString path = stringSetting(ExtraDumperFile); const QString path = stringSetting(ExtraDumperFile);
if (!path.isEmpty()) { if (!path.isEmpty()) {
DebuggerCommand cmd("addDumperModule"); DebuggerCommand cmd("addDumperModule");
@@ -300,6 +305,12 @@ void LldbEngine::setupInferior()
DebuggerCommand cmd1("loadDumperFiles"); DebuggerCommand cmd1("loadDumperFiles");
runCommand(cmd1); runCommand(cmd1);
}
// FIXME: splitting of setupInferior() necessary to support LLDB <= 310 - revert asap
void LldbEngine::setupInferiorStage2()
{
const DebuggerStartParameters &sp = startParameters();
QString executable; QString executable;
QtcProcess::Arguments args; QtcProcess::Arguments args;
@@ -436,9 +447,10 @@ void LldbEngine::handleResponse(const QByteArray &response)
const QByteArray name = item.name(); const QByteArray name = item.name();
if (name == "data") if (name == "data")
refreshLocals(item); refreshLocals(item);
else if (name == "dumpers") else if (name == "dumpers") {
watchHandler()->addDumpers(item); watchHandler()->addDumpers(item);
else if (name == "stack") setupInferiorStage2();
} else if (name == "stack")
refreshStack(item); refreshStack(item);
else if (name == "registers") else if (name == "registers")
refreshRegisters(item); refreshRegisters(item);
@@ -973,6 +985,9 @@ void LldbEngine::readLldbStandardOutput()
break; break;
QByteArray response = m_inbuffer.left(pos).trimmed(); QByteArray response = m_inbuffer.left(pos).trimmed();
m_inbuffer = m_inbuffer.mid(pos + 2); m_inbuffer = m_inbuffer.mid(pos + 2);
if (response == "lldbstartupok")
startLldbStage2();
else
emit outputReady(response); emit outputReady(response);
} }
} }

View File

@@ -78,7 +78,9 @@ private:
void setupEngine(); void setupEngine();
void startLldb(); void startLldb();
void startLldbStage2();
void setupInferior(); void setupInferior();
void setupInferiorStage2();
void runEngine(); void runEngine();
void shutdownInferior(); void shutdownInferior();
void shutdownEngine(); void shutdownEngine();