[Lldb-commits] [lldb] 45cd708 - [lldb] Change the statusline format to print "no target" (#139021)
via lldb-commits
lldb-commits at lists.llvm.org
Thu May 8 09:09:49 PDT 2025
Author: Jonas Devlieghere
Date: 2025-05-08T09:09:46-07:00
New Revision: 45cd708184e114bb771330d51ec552f7f674ffa0
URL: https://github.com/llvm/llvm-project/commit/45cd708184e114bb771330d51ec552f7f674ffa0
DIFF: https://github.com/llvm/llvm-project/commit/45cd708184e114bb771330d51ec552f7f674ffa0.diff
LOG: [lldb] Change the statusline format to print "no target" (#139021)
Change the default statusline format to print "no target" when lldb is
launched without a target. Currently, the statusline is empty, which
looks rather odd.
Added:
Modified:
lldb/source/Core/CoreProperties.td
lldb/test/API/functionalities/statusline/TestStatusline.py
Removed:
################################################################################
diff --git a/lldb/source/Core/CoreProperties.td b/lldb/source/Core/CoreProperties.td
index 2498841b47d9f..78988ce5b732f 100644
--- a/lldb/source/Core/CoreProperties.td
+++ b/lldb/source/Core/CoreProperties.td
@@ -186,7 +186,7 @@ let Definition = "debugger" in {
: Property<"statusline-format", "FormatEntity">,
Global,
DefaultStringValue<
- "${ansi.negative}{${target.file.basename}}{ "
+ "${ansi.negative}{${target.file.basename}|no target}{ "
"${separator}${line.file.basename}:${line.number}:${line.column}}{ "
"${separator}${thread.stop-reason}}{ "
"${separator}{${progress.count} }${progress.message}}">,
diff --git a/lldb/test/API/functionalities/statusline/TestStatusline.py b/lldb/test/API/functionalities/statusline/TestStatusline.py
index da6b4e7c8f320..53ac7432f4ba1 100644
--- a/lldb/test/API/functionalities/statusline/TestStatusline.py
+++ b/lldb/test/API/functionalities/statusline/TestStatusline.py
@@ -6,7 +6,17 @@
from lldbsuite.test.lldbpexpect import PExpectTest
+# PExpect uses many timeouts internally and doesn't play well
+# under ASAN on a loaded machine..
+ at skipIfAsan
class TestStatusline(PExpectTest):
+ # Change this value to something smaller to make debugging this test less
+ # tedious.
+ TIMEOUT = 60
+
+ TERMINAL_HEIGHT = 10
+ TERMINAL_WIDTH = 60
+
def do_setup(self):
# Create a target and run to a breakpoint.
exe = self.getBuildArtifact("a.out")
@@ -15,36 +25,34 @@ def do_setup(self):
)
self.expect('breakpoint set -p "Break here"', substrs=["Breakpoint 1"])
self.expect("run", substrs=["stop reason"])
+ self.resize()
+
+ def resize(self):
+ # Change the terminal dimensions. When we launch the tests, we reset
+ # all the settings, leaving the terminal dimensions unset.
+ self.child.setwinsize(self.TERMINAL_HEIGHT, self.TERMINAL_WIDTH)
- # PExpect uses many timeouts internally and doesn't play well
- # under ASAN on a loaded machine..
- @skipIfAsan
def test(self):
"""Basic test for the statusline."""
self.build()
- self.launch()
+ self.launch(timeout=self.TIMEOUT)
self.do_setup()
- # Change the terminal dimensions.
- terminal_height = 10
- terminal_width = 60
- self.child.setwinsize(terminal_height, terminal_width)
-
# Enable the statusline and check for the control character and that we
# can see the target, the location and the stop reason.
self.expect('set set separator "| "')
self.expect(
"set set show-statusline true",
[
- "\x1b[0;{}r".format(terminal_height - 1),
+ "\x1b[0;{}r".format(self.TERMINAL_HEIGHT - 1),
"a.out | main.c:2:11 | breakpoint 1.1 ",
],
)
# Change the terminal dimensions and make sure it's reflected immediately.
- self.child.setwinsize(terminal_height, 25)
+ self.child.setwinsize(self.TERMINAL_HEIGHT, 25)
self.child.expect(re.escape("a.out | main.c:2:11 | bre"))
- self.child.setwinsize(terminal_height, terminal_width)
+ self.child.setwinsize(self.TERMINAL_HEIGHT, self.TERMINAL_WIDTH)
# Change the separator.
self.expect('set set separator "S "', ["a.out S main.c:2:11"])
@@ -58,23 +66,15 @@ def test(self):
# Hide the statusline and check or the control character.
self.expect(
- "set set show-statusline false", ["\x1b[0;{}r".format(terminal_height)]
+ "set set show-statusline false", ["\x1b[0;{}r".format(self.TERMINAL_HEIGHT)]
)
- # PExpect uses many timeouts internally and doesn't play well
- # under ASAN on a loaded machine..
- @skipIfAsan
def test_no_color(self):
"""Basic test for the statusline with colors disabled."""
self.build()
- self.launch(use_colors=False)
+ self.launch(use_colors=False, timeout=self.TIMEOUT)
self.do_setup()
- # Change the terminal dimensions.
- terminal_height = 10
- terminal_width = 60
- self.child.setwinsize(terminal_height, terminal_width)
-
# Enable the statusline and check for the "reverse video" control character.
self.expect(
"set set show-statusline true",
@@ -87,15 +87,20 @@ def test_deadlock(self):
"""Regression test for lock inversion between the statusline mutex and
the output mutex."""
self.build()
- self.launch(extra_args=["-o", "settings set use-color false"])
+ self.launch(
+ extra_args=["-o", "settings set use-color false"], timeout=self.TIMEOUT
+ )
self.child.expect("(lldb)")
-
- # Change the terminal dimensions.
- terminal_height = 10
- terminal_width = 60
- self.child.setwinsize(terminal_height, terminal_width)
+ self.resize()
exe = self.getBuildArtifact("a.out")
self.expect("file {}".format(exe), ["Current executable"])
self.expect("help", ["Debugger commands"])
+
+ def test_no_target(self):
+ """Test that we print "no target" when launched without a target."""
+ self.launch(timeout=self.TIMEOUT)
+ self.resize()
+
+ self.expect("set set show-statusline true", ["no target"])
More information about the lldb-commits
mailing list