Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: Re: GDB ui word wrapping broken/interferes with 'set style'  ?
Date: Mon, 31 Dec 2018 08:13:00 -0000	[thread overview]
Message-ID: <1546244005.12900.20.camel@skynet.be> (raw)
In-Reply-To: <877efqlgu6.fsf@tromey.com>

On Sun, 2018-12-30 at 16:45 -0700, Tom Tromey wrote:
> Tom> Seems very likely.  Thanks for the report, I will look into it.
> 
> Please try this.  I think it fixes both of the styling problems you
> reported, but it's better if you check it too.  If it works for you I
> will write a test case.
Function and address colors are now as expected in the backtrace.

For word wrapping, I could not make it split addresses anymore,
but I still see differences with the 8.2 behaviour,
where the new gdb git+patch still splits filenames or some values.

8.2:
 (gdb) bt
#0  proc_in_c () at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
(gdb) 

git+patch:
(gdb) bt
#0  proc_in_c () at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada () at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lan
   g/proc_in_ada.adb:22
(gdb) 

(in both cases, 'show width' shows 116).

In a top-gdb debugging itself, I e.g. got the 'style' value which is split after FUNCTIO:
Breakpoint 3, cli_ui_out::do_field_string (this=0x562a4563f010, fldno=<optimized out>, width=<optimized out>, align=
    ui_noalign, fldname=<optimized out>, string=0x7ffd643d1ac8 "proc_in_ada", style=ui_out_style_kind::FUNCTIO
    N) at ../../smallthing/gdb/cli-out.c:174
174		  fstyle = function_name_style.style ();
(top-gdb) show width
Number of characters gdb thinks are in a line is 116.


If I change the width, the new gdb gives:
(gdb) set width 40
(gdb) bt
#0  proc_in_c () at /bd/home/philippe/gd
   b/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada ()
    at /bd/home/philippe/gdb/git/smal
   lthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
(gdb)
 
while 8.2 gives:
(gdb) set width 40
(gdb) bt
#0  proc_in_c ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada
    ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
(gdb) 


Playing further with smaller width, git+patch:
<et width 15     
(gdb) bt
#0  proc_in_c (
   ) at /bd/h
   ome/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada () at /
   bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
<idth 14
(gdb) bt
#0  proc_in_c 
   () at /bd/
   home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada () a
   t /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
<idth 13
(gdb) bt
#0  proc_in_c () at /bd/ho
   me/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada (
   ) at /bd
   /home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
(gdb) 

8.2:
(gdb) set width 15
(gdb) bt
#0  proc_in_c
    ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
<idth 14    
(gdb) bt
#0  proc_in_c
    ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
< width 13 
(gdb) bt
#0  proc_in_c ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c:26
#1  0x0000555555555477 in proc_in_ada
    ()
    at /bd/home/philippe/gdb/git/smallthing/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb:22
(gdb) 


Note that the behaviour of 8.2 is not always consistent for all commands.
E.g. info breaks in top-gdb gives:
(top-gdb) info break
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000562a43bbbdd0 in internal_error(char const*, int, char const*, ...) 
                                                   at ../../smallthing/gdb/common/errors.c:51
2       breakpoint     keep y   0x0000562a43ba3510 in info_command(char const*, int) 
                                                   at ../../smallthing/gdb/cli/cli-cmds.c:199
        silent
        return
3       breakpoint     keep y   0x0000562a43ba2610 in cli_ui_out::do_field_string(int, int, ui_align, char const*, char const*, ui_out_style_kind) at ../../smallthing/gdb/cli-out.c:174
	breakpoint already hit 2 times
(top-gdb) 

So, it splits before the ' at' in the first 2, but uses one single line
for the 3rd breakpoint.

gdb+patch gives:
(top-gdb) info break
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000562a43bbbdd0 in internal_error(char const*, int, char const*, ...) at ../../sm
                                                   allthing/gdb/common/errors.c:51
2       breakpoint     keep y   0x0000562a43ba3510 in info_command(char const*, int) at ../../smallthing/gdb/cli/cli
                                                   -cmds.c:199
        silent
        return
3       breakpoint     keep y   0x0000562a43ba2610 in cli_ui_out::do_field_string(int, int, ui_align, char const*, char const*, ui_out_style_kind) at ../../smallthing/gdb/cli-out.c:174
	breakpoint already hit 4 times
(top-gdb) detach

So, splits in the middle of filenames for the first 2 breakpoints,
and does not split for the 3rd.


> 
> thanks,
> Tom
> 
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 7be4360e62..0d1fcb79f1 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,7 @@
> +2018-12-30  Tom Tromey  <tom@tromey.com>
> +
> +	* utils.c (flush_wrap_buffer): Only flush gdb_stdout.
> +
>  2018-12-30  Tom Tromey  <tom@tromey.com>
>  
>  	* event-top.h (command_line_handler): Update.
> diff --git a/gdb/utils.c b/gdb/utils.c
> index 3a6f796f2b..753eb14280 100644
> --- a/gdb/utils.c
> +++ b/gdb/utils.c
> @@ -1589,7 +1589,7 @@ reinitialize_more_filter (void)
>  static void
>  flush_wrap_buffer (struct ui_file *stream)
>  {
> -  if (!wrap_buffer.empty ())
> +  if (stream == gdb_stdout && !wrap_buffer.empty ())
>      {
>        fputs_unfiltered (wrap_buffer.c_str (), stream);
>        wrap_buffer.clear ();


  reply	other threads:[~2018-12-31  8:13 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-30 14:51 Philippe Waroquiers
2018-12-30 20:26 ` Tom Tromey
2018-12-30 23:45   ` Tom Tromey
2018-12-31  8:13     ` Philippe Waroquiers [this message]
2019-01-06 23:40       ` Tom Tromey
2019-01-07 13:46         ` Philippe Waroquiers
2019-01-07 14:49           ` Tom Tromey
2019-01-07 16:56             ` Philippe Waroquiers
2019-01-12 17:03               ` Tom Tromey
2019-01-12 17:55                 ` Philippe Waroquiers
2019-01-12 21:08                   ` Philippe Waroquiers
2019-01-14  3:55                     ` Tom Tromey

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=1546244005.12900.20.camel@skynet.be \
    --to=philippe.waroquiers@skynet.be \
    --cc=gdb-patches@sourceware.org \
    --cc=tom@tromey.com \
    /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