diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 4702b6394a176bbb8ea5c37fdc6cb83935fcf948..9cd7dbd5e49a25d6c30ea4c2a10fa909dff4ed29 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -595,16 +595,16 @@ static inline QString expression(const WatchItem *item) { if (!item->exp.isEmpty()) return QString::fromAscii(item->exp); - if (item->address && !item->type.isEmpty()) { - return QString::fromAscii("*(%1*)%2"). - arg(QLatin1String(item->type), QLatin1String(item->hexAddress())); - } - if (const WatchItem *parent = item->parent) { - if (!parent->exp.isEmpty()) - return QString::fromAscii("(%1).%2") - .arg(QString::fromLatin1(parent->exp), item->name); - } - return QString(); + if (item->address && !item->type.isEmpty()) { + return QString::fromAscii("*(%1*)%2"). + arg(QLatin1String(item->type), QLatin1String(item->hexAddress())); + } + if (const WatchItem *parent = item->parent) { + if (!parent->exp.isEmpty()) + return QString::fromAscii("(%1).%2") + .arg(QString::fromLatin1(parent->exp), item->name); + } + return QString(); } QVariant WatchModel::data(const QModelIndex &idx, int role) const diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index ed59a6979e7525a74ac1162665f35138895045d5..f8bcb1c64a71550256a218aa829ae8fab853a767 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -739,8 +739,14 @@ static void setWatchDataAddress(WatchData &data, quint64 address , quint64 origA } else { data.address = address; } - if (data.exp.isEmpty() && !data.dumperFlags.startsWith('$')) - data.exp = "*(" + gdbQuoteTypes(data.type) + "*)" +data.hexAddress(); + if (data.exp.isEmpty() && !data.dumperFlags.startsWith('$')) { + if (data.iname.startsWith("local.") && data.iname.count('.') == 1) + // Solve one common case of adding 'class' in + // *(class X*)0xdeadbeef for gdb. + data.exp = data.name.toLatin1(); + else + data.exp = "*(" + gdbQuoteTypes(data.type) + "*)" +data.hexAddress(); + } } void setWatchDataAddress(WatchData &data, const GdbMi &addressMi, const GdbMi &origAddressMi)