gdb/testsuite: add some logging in Term::_check_box

Message ID 20210608194306.1636782-1-simon.marchi@polymtl.ca
State New
Headers show
Series
  • gdb/testsuite: add some logging in Term::_check_box
Related show

Commit Message

Mike Frysinger via Gdb-patches June 8, 2021, 7:43 p.m.
I was diagnosing some problem with a TUI test case, which lead me to
improve the logging of _check_box a bit.  It did help me, so I think it
would be nice to have it upstream.

gdb/testsuite/ChangeLog:

	* lib/tuiterm.exp (Term) <_check_box>: Improve logging.

Change-Id: I887e83c02507d6c59c991e17f795c844ed63bacf
---
 gdb/testsuite/lib/tuiterm.exp | 46 +++++++++++++++++++++++------------
 1 file changed, 30 insertions(+), 16 deletions(-)

-- 
2.31.1

Comments

Tom Tromey June 9, 2021, 2:45 p.m. | #1
>>>>> "Simon" == Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> writes:


Simon> I was diagnosing some problem with a TUI test case, which lead me to
Simon> improve the logging of _check_box a bit.  It did help me, so I think it
Simon> would be nice to have it upstream.

Simon> gdb/testsuite/ChangeLog:

Simon> 	* lib/tuiterm.exp (Term) <_check_box>: Improve logging.

This looks good to me.  Thank you.

BTW one thing that's useful on failures is to re-run with -v.
Then you can see screen dumps at the failure points.  When debugging I
also tend to hack in extra calls to Term::dump_screen.

Tom
Mike Frysinger via Gdb-patches June 9, 2021, 2:54 p.m. | #2
On 2021-06-09 10:45 a.m., Tom Tromey wrote:
>>>>>> "Simon" == Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> writes:

> 

> Simon> I was diagnosing some problem with a TUI test case, which lead me to

> Simon> improve the logging of _check_box a bit.  It did help me, so I think it

> Simon> would be nice to have it upstream.

> 

> Simon> gdb/testsuite/ChangeLog:

> 

> Simon> 	* lib/tuiterm.exp (Term) <_check_box>: Improve logging.

> 

> This looks good to me.  Thank you.


Thanks, pushed.

> BTW one thing that's useful on failures is to re-run with -v.

> Then you can see screen dumps at the failure points.  When debugging I

> also tend to hack in extra calls to Term::dump_screen.


I do `tail -F testsuite/gdb.log`, I presume that gives about the same
thing.

I'd say, don't be afraid to add more calls to dump_screen upstream where
you found it useful, it always helps to see the intermediary states.

Simon

Patch

diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index 3f6271ef0ea0..fdd9f4d2188f 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -729,17 +729,26 @@  namespace eval Term {
 	set x2 [expr {$x + $width - 1}]
 	set y2 [expr {$y + $height - 1}]
 
-	if {[get_char $x $y] != "+"} {
-	    return "ul corner"
+	verbose -log "_check_box x=$x, y=$y, x2=$x2, y2=$y2, width=$width, height=$height"
+
+	set c [get_char $x $y]
+	if {$c != "+"} {
+	    return "ul corner is $c, not +"
 	}
-	if {[get_char $x $y2] != "+"} {
-	    return "ll corner"
+
+	set c [get_char $x $y2]
+	if {$c != "+"} {
+	    return "ll corner is $c, not +"
 	}
-	if {[get_char $x2 $y] != "+"} {
-	    return "ur corner"
+
+	set c [get_char $x2 $y]
+	if {$c != "+"} {
+	    return "ur corner is $c, not +"
 	}
-	if {[get_char $x2 $y2] != "+"} {
-	    return "lr corner"
+
+	set c [get_char $x2 $y2]
+	if {$c != "+"} {
+	    return "lr corner is $c, not +"
 	}
 
 	# Note we do not check the full horizonal borders of the box.
@@ -747,21 +756,26 @@  namespace eval Term {
 	# it is overlapped by some other border.  However, at most a
 	# title should appear as '+-VERY LONG TITLE-+', so we can
 	# check for the '+-' on the left, and '-+' on the right.
-	if {[get_char [expr {$x + 1}] $y] != "-"} {
-	    return "ul title padding"
+	set c [get_char [expr {$x + 1}] $y]
+	if {$c != "-"} {
+	    return "ul title padding is $c, not -"
 	}
 
-	if {[get_char [expr {$x2 - 1}] $y] != "-"} {
-	    return "ul title padding"
+	set c [get_char [expr {$x2 - 1}] $y]
+	if {$c != "-"} {
+	    return "ul title padding is $c, not -"
 	}
 
 	# Now check the vertical borders.
 	for {set i [expr {$y + 1}]} {$i < $y2 - 1} {incr i} {
-	    if {[get_char $x $i] != "|"} {
-		return "left side $i"
+	    set c [get_char $x $i]
+	    if {$c != "|"} {
+		return "left side $i is $c, not |"
 	    }
-	    if {[get_char $x2 $i] != "|"} {
-		return "right side $i"
+
+	    set c [get_char $x2 $i]
+	    if {$c != "|"} {
+		return "right side $i is $c, not |"
 	    }
 	}