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)