This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: variable displayed twice when using GDB/MI


On 06/05/2018 10:49 AM, Xavier Roirand wrote:
> Hello,
> 
> I'm using a simple C program:
> 
> void main() {
>         int i=0;
> }
> 
> When debugging with MI interpreter, I want to display variable i:
> 
> (gdb)
> -break-insert main
> ^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x000000000040049b",func="main",file="foo.c",fullname="/tmp/foo.c",line="2",thread-groups=["i1"],times="0",original-location="main"}
> (gdb)
> -exec-run
> [...]
> display i
> &"display i\n"
> ~"1: i = 0"
> ~"\n"
> ^done
> (gdb)
> 
> If I do a 'next':
> 
> (gdb)
> n
> &"n\n"
> ^running
> *running,thread-id="all"
> (gdb)
> ~"1: i = 0"
> ~"\n"
> ~"3\t}\n"
> ~"1: i = 0"
> ~"\n"
> [...]
> (gdb)
> 
> The variable i is displayed twice, is it expected ? Using CLI interpreter it's displayed only once so I'm wondering if this is expected or not ?
This is GDB printing the stop event on both the CLI uiout and on
the MI uiout, from mi_on_normal_stop_1:

      print_stop_event (mi_uiout);

      console_interp = interp_lookup (current_ui, INTERP_CONSOLE);
      if (should_print_stop_to_console (console_interp, tp))
	print_stop_event (mi->cli_uiout);

See intro comment on should_print_stop_to_console, please.

print_stop_event is what currently calls "do_displays",
so we print the displays twice.

Fixing this probably needs to take in consideration whether
we print the displays on the CLI uiout even if the stop
isn't printed there according to should_print_stop_to_console.
I.e., what makes more sense for a user that enabled some display,
but then stepped with the frontend's "step" buttons instead of
typing "next" or "step".  Probably we shouldn't print the
displays in that case, just to keep things simple, respecting
should_print_stop_to_console, but not 100% sure.

Thanks,
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]