From 971c1999d2baf31dc3e1c28b0702ea84f4bb0a49 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 9 Apr 2009 11:35:58 +0200
Subject: [PATCH] debugger: provide an entry saying <no information> if an
 object has no children (or no debug information available)

---
 src/plugins/debugger/gdbengine.cpp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 9c52125b624..906b38a72b1 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -3955,9 +3955,23 @@ void GdbEngine::handleVarListChildren(const GdbResultRecord &record,
         foreach (const GdbMi &child, children.children())
             handleVarListChildrenHelper(child, data);
 
-        if (!isAccessSpecifier(data.variable.split('.').takeLast())) {
+        if (children.children().isEmpty()) {
+            // happens e.g. if no debug information is present or
+            // if the class really has no children
+            WatchData data1;
+            data1.iname = data.iname + ".child";
+            data1.value = tr("<no information>");
+            data1.childCount = 0;
+            data1.setAllUnneeded();
+            insertData(data1);
+            data.setAllUnneeded();
+            insertData(data);
+        } else if (!isAccessSpecifier(data.variable.split('.').takeLast())) {
             data.setChildrenUnneeded();
             insertData(data);
+        } else {
+            // this skips the spurious "public", "private" etc levels
+            // gdb produces
         }
     } else if (record.resultClass == GdbResultError) {
         data.setError(record.data.findChild("msg").data());
-- 
GitLab