From 0653843d472c820ae9995fbbdbfef2ccda6f4346 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Fri, 29 Jan 2010 15:47:51 +0100 Subject: [PATCH] debugger: implement stub for qThreadExtraInfo, add some debugging aid --- src/plugins/debugger/gdb/gdbengine.cpp | 2 +- src/plugins/debugger/gdb/trkgdbadapter.cpp | 25 ++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 9ea8aaf6739..02d03eab3da 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1510,7 +1510,7 @@ QString GdbEngine::fullName(const QString &fileName) { if (fileName.isEmpty()) return QString(); - QTC_ASSERT(!m_sourcesListOutdated, /* */) + //QTC_ASSERT(!m_sourcesListOutdated, /* */) QTC_ASSERT(!m_sourcesListUpdating, /* */) return m_shortToFullName.value(fileName, QString()); } diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index a8dcbd7d354..5b883f424f7 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp @@ -655,16 +655,28 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "g") { // Read general registers. if (m_snapshot.registerValid) { + //qDebug() << "Using cached register contents"; logMessage(msgGdbPacket(QLatin1String("Read registers"))); sendGdbServerAck(); reportRegisters(); } else { + //qDebug() << "Fetching register contents"; + sendGdbServerAck(); sendTrkMessage(0x12, TrkCB(handleAndReportReadRegisters), trkReadRegistersMessage()); } } + else if (cmd == "gg") { + // Force re-reading general registers for debugging purpose. + sendGdbServerAck(); + m_snapshot.registerValid = false; + sendTrkMessage(0x12, + TrkCB(handleAndReportReadRegisters), + trkReadRegistersMessage()); + } + else if (cmd.startsWith("Hc")) { logMessage(msgGdbPacket(QLatin1String("Set thread & continue"))); // Set thread for subsequent operations (`m', `M', `g', `G', et.al.). @@ -741,6 +753,7 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) //sendGdbServerMessage("E01", "read single unknown register"); } } else { + //qDebug() << "Fetching single register"; sendTrkMessage(0x12, TrkCB(handleAndReportReadRegister), trkReadRegistersMessage(), registerNumber); @@ -796,6 +809,12 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) "qXfer:features:read+"); } + else if (cmd.startsWith("qThreadExtraInfo")) { + // $qThreadExtraInfo,1f9#55 + sendGdbServerAck(); + sendGdbServerMessage(QByteArray("Nothing special").toHex()); + } + else if (cmd == "qfDllInfo") { // That's the _first_ query package. // Happens with gdb 6.4.50.20060226-cvs / CodeSourcery. @@ -1092,6 +1111,7 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) #if 1 // We almost always need register values, so get them // now before informing gdb about the stop.s + //qDebug() << "Auto-fetching registers"; sendTrkMessage(0x12, TrkCB(handleAndReportReadRegistersAfterStop), trkReadRegistersMessage()); @@ -1100,7 +1120,8 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) // several instruction steps, better avoid the multiple // roundtrips through TRK in favour of an additional // roundtrip through gdb. But gdb will ask for all registers. - sendGdbServerMessage("S05", "Target stopped"); + //sendGdbServerMessage("S05", "Target stopped"); + // -- or -- QByteArray ba = "T05"; appendRegister(&ba, RegisterPSGdb, addr); sendGdbServerMessage(ba, "Registers"); @@ -1453,7 +1474,7 @@ void TrkGdbAdapter::tryAnswerGdbMemoryRequest(bool buffered) it = m_snapshot.memory.begin(); et = m_snapshot.memory.end(); for ( ; it != et; ++it) - qDebug() << it.key().from << it.key().to; + qDebug() << hexNumber(it.key().from) << hexNumber(it.key().to); qDebug() << "WANTED" << wanted.from << wanted.to; #endif sendGdbServerMessage("E22", ""); -- GitLab