Debugger[TCF Trk]: Start on TCF Trk 4.0.5

At least display the errors it produces correctly.
This commit is contained in:
Friedemann Kleint
2010-08-10 14:50:29 +02:00
parent d75239aeab
commit ff5ee69db9
3 changed files with 41 additions and 14 deletions

View File

@@ -677,8 +677,11 @@ void DebuggerEngine::showMessage(const QString &msg, int channel, int timeout) c
//if (msg.size() && msg.at(0).isUpper() && msg.at(1).isUpper()) //if (msg.size() && msg.at(0).isUpper() && msg.at(1).isUpper())
// qDebug() << qPrintable(msg) << "IN STATE" << state(); // qDebug() << qPrintable(msg) << "IN STATE" << state();
plugin()->showMessage(msg, channel, timeout); plugin()->showMessage(msg, channel, timeout);
QTC_ASSERT(d->m_runControl, return); if (d->m_runControl) {
d->m_runControl->showMessage(msg, channel); d->m_runControl->showMessage(msg, channel);
} else {
qWarning("Warning: %s (no active run control)", qPrintable(msg));
}
} }
void DebuggerEngine::startDebugger(DebuggerRunControl *runControl) void DebuggerEngine::startDebugger(DebuggerRunControl *runControl)

View File

@@ -59,9 +59,12 @@ void TcfTrkCommandError::clear()
void TcfTrkCommandError::write(QTextStream &str) const void TcfTrkCommandError::write(QTextStream &str) const
{ {
if (isError()) {
if (timeMS) { if (timeMS) {
const QDateTime time(QDate(1970, 1, 1)); const QDateTime time(QDate(1970, 1, 1));
str << time.addMSecs(timeMS).toString(Qt::ISODate) << ": Error code: " << code str << time.addMSecs(timeMS).toString(Qt::ISODate) << ": ";
}
str << "Error code: " << code
<< " '" << format << '\''; << " '" << format << '\'';
if (!alternativeOrganization.isEmpty()) if (!alternativeOrganization.isEmpty())
str << " ('" << alternativeOrganization << "', code: " << alternativeCode << ')'; str << " ('" << alternativeOrganization << "', code: " << alternativeCode << ')';
@@ -78,6 +81,11 @@ QString TcfTrkCommandError::toString() const
return rc; return rc;
} }
bool TcfTrkCommandError::isError() const
{
return timeMS != 0 || code != 0 || !format.isEmpty() || alternativeCode != 0;
}
/* {"Time":1277459762255,"Code":1,"AltCode":-6,"AltOrg":"POSIX","Format":"Unknown error: -6"} */ /* {"Time":1277459762255,"Code":1,"AltCode":-6,"AltOrg":"POSIX","Format":"Unknown error: -6"} */
bool TcfTrkCommandError::parse(const QVector<JsonValue> &values) bool TcfTrkCommandError::parse(const QVector<JsonValue> &values)
{ {
@@ -111,7 +119,7 @@ bool TcfTrkCommandError::parse(const QVector<JsonValue> &values)
if (!errorFound) if (!errorFound)
clear(); clear();
if (debug) { if (debug) {
qDebug() << "TcfTrkCommandError::parse: Found error: " << errorFound; qDebug("TcfTrkCommandError::parse: Found error %d (%u): ", errorFound, errorKeyCount);
if (!values.isEmpty()) if (!values.isEmpty())
qDebug() << values.front().toString(); qDebug() << values.front().toString();
} }
@@ -360,11 +368,20 @@ void TcfTrkDevice::slotDeviceReadyRead()
const int messageEndPos = d->m_readBuffer.indexOf(d->m_messageTerminator); const int messageEndPos = d->m_readBuffer.indexOf(d->m_messageTerminator);
if (messageEndPos == -1) if (messageEndPos == -1)
break; break;
if (messageEndPos == 0) {
// TCF TRK 4.0.5 emits empty messages on errors.
emitLogMessage(QString::fromLatin1("An empty TCF TRK message has been received."));
} else {
const QByteArray message = d->m_readBuffer.left(messageEndPos); const QByteArray message = d->m_readBuffer.left(messageEndPos);
if (debug) if (debug)
qDebug("Read:\n%s", qPrintable(formatData(message))); qDebug("Read %d bytes:\n%s", message.size(), qPrintable(formatData(message)));
if (const int errorCode = parseMessage(message)) { if (const int errorCode = parseMessage(message)) {
emitLogMessage(QString::fromLatin1("Parse error %1 for: %2").arg(errorCode).arg(debugMessage(message))); emitLogMessage(QString::fromLatin1("Parse error %1 : %2").
arg(errorCode).arg(debugMessage(message)));
if (debug)
qDebug("Parse error %d for %d bytes:\n%s", errorCode,
message.size(), qPrintable(formatData(message)));
}
} }
d->m_readBuffer.remove(0, messageEndPos + d->m_messageTerminator.size()); d->m_readBuffer.remove(0, messageEndPos + d->m_messageTerminator.size());
} while (!d->m_readBuffer.isEmpty()); } while (!d->m_readBuffer.isEmpty());
@@ -668,7 +685,13 @@ void TcfTrkDevice::sendProcessStartCommand(const TcfTrkCallback &callBack,
<< '{' << binaryFileName << ':' << QString::number(uid, 16) << '}' << ',' << '{' << binaryFileName << ':' << QString::number(uid, 16) << '}' << ','
<< additionalLibraries << additionalLibraries
<< ']'; << ']';
sendTcfTrkMessage(MessageWithoutReply, SettingsService, "set", setData); sendTcfTrkMessage(
#if 1
MessageWithReply, // TCF TRK 4.0.5 onwards
#else
MessageWithoutReply, // TCF TRK 4.0.2
#endif
SettingsService, "set", setData);
QByteArray startData; QByteArray startData;
JsonInputStream startStr(startData); JsonInputStream startStr(startData);

View File

@@ -63,7 +63,8 @@ struct Breakpoint;
struct SYMBIANUTILS_EXPORT TcfTrkCommandError { struct SYMBIANUTILS_EXPORT TcfTrkCommandError {
TcfTrkCommandError(); TcfTrkCommandError();
void clear(); void clear();
operator bool() const { return timeMS != 0; } bool isError() const;
operator bool() const { return isError(); }
QString toString() const; QString toString() const;
void write(QTextStream &str) const; void write(QTextStream &str) const;
bool parse(const QVector<JsonValue> &values); bool parse(const QVector<JsonValue> &values);