Unable to change the value of a variable while debugging Symbian - issue fixed

Reviewed-by: hjk
This commit is contained in:
Pawel Polanski
2010-10-01 18:37:30 +02:00
parent d40007938c
commit cbdf363709
3 changed files with 42 additions and 2 deletions

View File

@@ -829,6 +829,17 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
sendGdbServerMessage("E20", msg.toLatin1());
}
} // qPart/qXfer
else if (cmd.startsWith("X")) {
logMessage(msgGdbPacket(QLatin1String("Write memory")));
// X addr,length
sendGdbServerAck();
const QPair<quint64, unsigned> addrLength = parseGdbReadMemoryRequest(cmd);
int pos = cmd.indexOf(':');
m_snapshot.resetMemory();
writeMemory(addrLength.first, cmd.mid(pos + 1, addrLength.second));
}
else {
logMessage(msgGdbPacket(QLatin1String("FIXME unknown: ")
+ QString::fromAscii(cmd)), LogWarning);
@@ -1444,6 +1455,29 @@ void TrkGdbAdapter::readMemory(uint addr, uint len, bool buffered)
tryAnswerGdbMemoryRequest(buffered);
}
void TrkGdbAdapter::writeMemory(uint addr, const QByteArray &data)
{
Q_ASSERT(data.size() < (2 << 16));
if (m_verbose > 2) {
logMessage(_("writeMemory %1 bytes from 0x%2 blocksize=%3 data=%4")
.arg(data.size()).arg(addr, 0, 16).arg(MemoryChunkSize).arg(QString::fromLatin1(data.toHex())));
}
sendTrkMessage(0x11, TrkCB(handleWriteMemory),
trkWriteMemoryMessage(addr, data));
}
void TrkGdbAdapter::handleWriteMemory(const TrkResult &result)
{
logMessage(" RESULT: " + result.toString() + result.cookie.toString());
if (result.errorCode()) {
logMessage("ERROR: " + result.errorString(), LogError);
sendGdbServerMessage("E01");
return;
}
sendGdbServerMessage("OK");
}
void TrkGdbAdapter::interruptInferior()
{
sendTrkMessage(0x1a, TrkCallback(), trkInterruptMessage(), "Interrupting...");