From: Tom de Vries <tdevries@suse.de>
To: John Baldwin <jhb@FreeBSD.org>, gdb-patches@sourceware.org
Subject: Re: [PATCH] [gdb/cli] Add maint info screen
Date: Thu, 27 Apr 2023 23:06:26 +0200 [thread overview]
Message-ID: <8cbba796-f112-09f8-e3c2-3e9c76cddf6e@suse.de> (raw)
In-Reply-To: <c2c8fd76-733c-f7cf-c125-511ea88715f3@FreeBSD.org>
On 4/27/23 22:49, John Baldwin wrote:
> On 4/17/23 7:09 AM, Tom de Vries via Gdb-patches wrote:
>> While working on PRs tui/30337 and cli/30346 I came across various
>> notions of
>> width in gdb, as reported by gdb, readline, curses and the environment
>> variables.
>>
>> As for gdb, readline and the environment variables, the way things work
>> is:
>> - Gdb asks readline to detect screen size,
>> - readline sets the actual screen size in the environment variables
>> COLUMNS and LINES,
>> - readline reports back a screen size to gdb, which may have one column
>> less than the actual screen size, to deal with lack of auto-wrap.
>> This becomes gdb's notion of screen size (in other words the point
>> where
>> we can expect the gdb command line to wrap),
>> - Gdb then explicitly sets readline's screen size, which readline
>> itself may
>> adjust to deal with lack of auto-wrap. This becomes readlines notion
>> of screen size (well, internally the unadjusted one, but it'll
>> report back
>> the adjusted one).
>>
>> Add a command "maint info screen" that prints these notions, both for
>> width
>> and height.
>>
>> For TERM=xterm we have:
>> ...
>> $ TERM=xterm gdb -ex "maint info screen"
>> Number of characters gdb thinks are in a line is 118.
>> Number of characters readline reports are in a line is 118.
>> Number of characters curses thinks are in a line is 118.
>> Number of characters environment thinks are in a line is 118 (COLUMNS).
>> Number of lines gdb thinks are in a page is 27.
>> Number of lines readline reports are in a page is 27.
>> Number of lines curses thinks are in a page is 27.
>> Number of lines environment thinks are in a page is 27 (LINES).
>> ...
>>
>> And for TERM=ansi:
>> ...
>> $ TERM=ansi gdb -ex "maint info screen"
>> Number of characters gdb thinks are in a line is 117.
>> Number of characters readline reports are in a line is 116.
>> Number of characters curses thinks are in a line is 118.
>> Number of characters environment thinks are in a line is 118 (COLUMNS).
>> Number of lines gdb thinks are in a page is 27.
>> Number of lines readline reports are in a page is 27.
>> Number of lines curses thinks are in a page is 27.
>> Number of lines environment thinks are in a page is 27 (LINES).
>> ...
>>
>> [ The fact that we have "characters readline reports are in a line is
>> 116" is
>> is due to gdb making readline adjust twice for the lack of auto-wrap,
>> this is
>> PR cli/30346.
>>
>> Likewise we can detect tui/30337 by doing a resize in TUI mode and doing
>> "maint info screen":
>> ...
>> Number of characters characters curses thinks are in a line is 110.
>> Number of characters environment thinks are in a line is 111 (COLUMNS). ]
>>
>> And for TERM=ansi, with width and heigth set to 0:
>> ...
>> Number of characters gdb thinks are in a line is 4294967295 (unlimited).
>> Number of characters readline reports are in a line is 32766
>> (unlimited - 1).
>> Number of characters curses thinks are in a line is 118.
>> Number of characters environment thinks are in a line is 118 (COLUMNS).
>> Number of lines gdb thinks are in a page is 4294967295 (unlimited).
>> Number of lines readline reports are in a page is 32767 (unlimited).
>> Number of lines curses thinks are in a page is 27.
>> Number of lines environment thinks are in a page is 27 (LINES).
>> ...
>>
>> [ Note that when doing a resize by say maximizing or de-maximizing a
>> terminal,
>> all reported values are updated, except for curses when not in TUI mode.
>>
>> Maybe that means there's a bug. If not, then maybe we should not print
>> the curses lines unless in TUI mode, or annotate those lines such that
>> it's
>> clear that the values may be not up-to-date. ]
>>
>> I'd like to use this command in the regression test for PR cli/30346.
>>
>> Tested on x86_64-linux.
>
> I was building GDB in a Linux x86-64 VM that didn't have curses-dev
> installed and
> this change causes GDB to no longer build:
Hi, this was already reported before (
https://sourceware.org/bugzilla/show_bug.cgi?id=30391 ), but using your
report I can now also reproduce it after doing "sudo zypper remove
ncurses-devel", thanks.
- Tom
prev parent reply other threads:[~2023-04-27 21:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-17 14:09 Tom de Vries
2023-04-17 17:19 ` Eli Zaretskii
2023-04-21 15:21 ` Tom de Vries
2023-04-21 13:54 ` Tom Tromey
2023-04-27 20:49 ` John Baldwin
2023-04-27 21:06 ` Tom de Vries [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8cbba796-f112-09f8-e3c2-3e9c76cddf6e@suse.de \
--to=tdevries@suse.de \
--cc=gdb-patches@sourceware.org \
--cc=jhb@FreeBSD.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).