-
Notifications
You must be signed in to change notification settings - Fork 14.5k
[lldb] Adjust default target.max-children-depth #149282
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Deeply nested structs can be noisy, so Apple's LLDB fork sets the default to `4`: https://github.com/swiftlang/llvm-project/blob/9c93adbb283005ab416fd155b75fd43e6a8288ca/lldb/source/Target/TargetProperties.td#L134-L136 Thought it would be useful to upstream this. Though happy to pick a different default or keep it as-is.
@llvm/pr-subscribers-lldb Author: Michael Buch (Michael137) ChangesDeeply nested structs can be noisy, so Apple's LLDB fork sets the default to Thought it would be useful to upstream this. Though happy to pick a different default or keep it as-is. Full diff: https://github.com/llvm/llvm-project/pull/149282.diff 2 Files Affected:
diff --git a/lldb/source/Target/TargetProperties.td b/lldb/source/Target/TargetProperties.td
index 656503bb8d228..e6cd48a9d3dad 100644
--- a/lldb/source/Target/TargetProperties.td
+++ b/lldb/source/Target/TargetProperties.td
@@ -99,7 +99,7 @@ let Definition = "target" in {
DefaultUnsignedValue<24>,
Desc<"Maximum number of children to expand in any level of depth.">;
def MaxChildrenDepth: Property<"max-children-depth", "UInt64">,
- DefaultUnsignedValue<0xFFFFFFFF>,
+ DefaultUnsignedValue<4>,
Desc<"Maximum depth to expand children.">;
def MaxSummaryLength: Property<"max-string-summary-length", "UInt64">,
DefaultUnsignedValue<1024>,
diff --git a/lldb/test/Shell/Settings/TestChildDepthTruncation.test b/lldb/test/Shell/Settings/TestChildDepthTruncation.test
new file mode 100644
index 0000000000000..e0e6cda516655
--- /dev/null
+++ b/lldb/test/Shell/Settings/TestChildDepthTruncation.test
@@ -0,0 +1,84 @@
+# Test that we warn the user about truncated output
+# when target.max-children-depth wasn't explicitly set.
+
+# RUN: split-file %s %t
+# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out
+# RUN: %lldb -x -b -s %t/dwim-commands.input %t.out -o exit 2>&1 \
+# RUN: | FileCheck %s --check-prefix=DWIM
+#
+# RUN: %lldb -x -b -s %t/expr-commands.input %t.out -o exit 2>&1 \
+# RUN: | FileCheck %s --check-prefix=EXPR
+#
+# RUN: %lldb -x -b -s %t/frame-var-commands.input %t.out -o exit 2>&1 \
+# RUN: | FileCheck %s --check-prefix=VAR
+#
+# RUN: %lldb -x -b -s %t/with-setting-commands.input %t.out -o exit 2>&1 \
+# RUN: | FileCheck %s --check-prefix=SETTING
+
+#--- main.cpp
+
+struct L1 {
+ int w;
+ struct L2 {
+ int x;
+ struct L3 {
+ int y;
+ struct L4 {
+ int z;
+ struct L5 {
+ int a;
+ } l5;
+ } l4;
+ } l3;
+ } l2;
+};
+
+int main() {
+ L1 nested;
+ __builtin_debugtrap();
+}
+
+#--- dwim-commands.input
+
+run
+dwim-print nested
+frame variable nested
+
+DWIM: (lldb) dwim-print nested
+DWIM: *** Some of the displayed variables have a greater depth of members
+DWIM-SAME: use the --depth option to dwim-print
+DWIM: (lldb) frame variable nested
+DWIM-NOT: *** Some of the displayed variables have a greater depth of members
+
+#--- expr-commands.input
+
+run
+expression nested
+frame variable nested
+
+EXPR: (lldb) expression nested
+EXPR: *** Some of the displayed variables have a greater depth of members
+EXPR-SAME: use the --depth option to expression
+EXPR: (lldb) frame variable nested
+EXPR-NOT: *** Some of the displayed variables have a greater depth of members
+
+#--- frame-var-commands.input
+
+run
+frame variable nested
+frame variable nested
+
+VAR: (lldb) frame variable nested
+VAR: *** Some of the displayed variables have a greater depth of members
+VAR-SAME: use the --depth option to frame variable
+VAR: (lldb) frame variable nested
+VAR-NOT: *** Some of the displayed variables have a greater depth of members
+
+#--- with-setting-commands.input
+
+run
+settings set target.max-children-depth 1
+frame variable nested
+
+SETTING: (lldb) frame variable nested
+SETTING-NOT: *** Some of the displayed variables have a greater depth of members
|
#149282 changed the max children depth and that caused one part of the output to become `{...}`. The original PR set a higher limit for a different test, so I'm doing the same here.
llvm/llvm-project#149282 changed the max children depth and that caused one part of the output to become `{...}`. The original PR set a higher limit for a different test, so I'm doing the same here.
Fixes failure after we introduced a default limit in #149282 We already did this test change on the Apple fork.
…h in test Fixes failure after we introduced a default limit in llvm/llvm-project#149282 We already did this test change on the Apple fork.
Deeply nested structs can be noisy, so Apple's LLDB fork sets the default to
4
: https://github.com/swiftlang/llvm-project/blob/9c93adbb283005ab416fd155b75fd43e6a8288ca/lldb/source/Target/TargetProperties.td#L134-L136Thought it would be useful to upstream this. Though happy to pick a different default or keep it as-is.