diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index cadb0c1312961b72d2a2a2ddae66470dd601e388..145ef4dbdfc8c228baf7d2f22e65bd3e826ab4e5 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -644,8 +644,18 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const
             break;
         }
 
-        case LocalsExpressionRole:
-            return data.exp;
+        case LocalsExpressionRole: {
+            if (!data.exp.isEmpty())
+                return data.exp;
+            quint64 addr = data.coreAddress();
+            if (addr && !data.type.isEmpty())
+                return QString("*(%1*)%2").arg(data.type).arg(addr);
+            WatchItem *parent = item->parent;
+            if (parent && !parent->exp.isEmpty())
+                return QString("(%1).%2")
+                    .arg(QString::fromLatin1(parent->exp)).arg(data.name);
+            return QVariant();
+        }
 
         case LocalsINameRole:
             return data.iname;