Debugger: Fixes around watch editing.

assignValueInDebugger: Pass on WatchData as well, pass
on values as QVariant. Based on that, do more extensive
checks in CDB, preventing assignment of non-PODs.

Locals/Watch editing:
* Disable while running
* Edit pointer values as hex with validation.

CDB: Strip class types off reported pointer values and reformat
the values as short 0x-pointer values, introduce flag to
WatchData::source to do dumper expansion handling.

Windows: recognize int64 as int.

Register handler: Fix accessing uninitialized value.
This commit is contained in:
Friedemann Kleint
2010-09-23 13:22:08 +02:00
parent d81d90a67a
commit 13c97d652e
24 changed files with 197 additions and 136 deletions

View File

@@ -488,8 +488,8 @@ void QmlEngine::setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEd
//
//////////////////////////////////////////////////////////////////////
void QmlEngine::assignValueInDebugger(const QString &expression,
const QString &value)
void QmlEngine::assignValueInDebugger(const Internal::WatchData *,
const QString &expression, const QVariant &valueV)
{
QRegExp inObject("@([0-9a-fA-F]+)->(.+)");
if (inObject.exactMatch(expression)) {
@@ -500,7 +500,7 @@ void QmlEngine::assignValueInDebugger(const QString &expression,
QByteArray reply;
QDataStream rs(&reply, QIODevice::WriteOnly);
rs << QByteArray("SET_PROPERTY");
rs << expression.toUtf8() << objectId << property << value;
rs << expression.toUtf8() << objectId << property << valueV.toString();
sendMessage(reply);
}
}