Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Marc Khouzam <marc.khouzam@ericsson.com>
To: 'Yao Qi' <yao@codesourcery.com>,
	"'gdb-patches@sourceware.org'"	<gdb-patches@sourceware.org>
Cc: "'tromey@redhat.com'" <tromey@redhat.com>,
	'Pedro Alves'	<palves@redhat.com>,
	'Joel Brobecker' <brobecker@adacore.com>,
	'Stan Shebs'	<stanshebs@earthlink.net>
Subject: DPrintf feedback (was: [RFC] PR 15075 dprintf interferes with "next")
Date: Fri, 22 Feb 2013 17:39:00 -0000	[thread overview]
Message-ID: <E59706EF8DB1D147B15BECA3322E4BDC0C3A1D@eusaamb103.ericsson.se> (raw)
In-Reply-To: <1361192891-29341-1-git-send-email-yao@codesourcery.com>

Hi,

Yao posting a patch for dprintf was good timing.
I've been working on integrating the dprintf feature
into Eclipse and I ran into some issues.

I think the main point to discuss is the fact that
dprintf use breakpoint commands.  This has been put in question,
a couple of times on the mailing list I believe.  An impact
of that approach is that although in CLI, dprintf are silent 
breakpoints, they don't seem to be in MI.  When I put a dprintf 
in a loop and run over it, I get a bunch of *stopped/*running 
events and =breakpoint-modified events.

I'm not sure how I feel about the =break-modified event just yet
and your expert opinion would be appreciated.  However, the 
*stopped/*running events seem like they shouldn't be there.
They cause a lot of un-needed communication between Eclipse and GDB.

This gives me the feeling that it would be better to have dprintf
behave like an active tracepoint instead of a breakpoint.  I believe
Joel had suggested that at one point.

Such an approach may also help fix the "continue" problem
that Yao is trying to address.  I seem to recall that Hui had posted 
patches to add some kind of 'printf' tracepoint command.  Maybe that 
would be something that can help?

Also, as pointed out by Pedro, the user is able to modify the 
dprintf breakpoint commands, which can suddenly turn a dprintf
into something else, although GDB still has it tagged as 'dprintf'.
The fact that GDB has a new type 'dprintf', implies that dprintf
should keep their 'dprintf' properties, and not be turned into
a standard bp.

Other issues I ran across are below.  I wasn't sure opening PRs was
the way to do since those issues may disappear if the current 
implementation is amended:

- If I set a condition on a dprintf, things don't behave right.
  When the condition is false, the printout is not shown, but the 
  dprintf causes the inferior to stop and not continue.

- Setting the dprintf-style to 'agent' for a local session defaults
  to 'gdb' style, but the 'continue' command is not added in that 
  case (easy to fix)

- Pagination is triggered for dprintf in CLI mode, at least when
  using dprintf-style 'gdb'.  I think this is a problem because:
   a) when pagination is triggered, inferior execution will be 
      interrupted until the user answers the pagination prompt
   b) pagination is triggered by the dprintf but not by real 
      inferior output. So, as dprintf and inferior printouts 
      appear interleaved on the screen, the pagination prompt 
      will be triggered when the dprintfs add up to too many, 
      which will seem random to the user, since the other 
      printouts are also visible.

- In Eclipse, the dprintf-style that makes sense is either 
  'call' or 'agent'.  'call' will call 'printf' in the inferior.
  With GDB 7.5, GDB cannot call an inferior method on Ubuntu, 
  which is a serious limitation for eclipse/dprintf.
  http://sourceware.org/ml/gdb-patches/2012-07/msg00037.html

- Updating the dprintf-style to 'agent' for existing dprintfs 
  will cause: "May only run agent-printf on the target" when 
  it is time to print.

- The fact that there is no expression checking on the validity 
  of the dprintf string can be a user-friendliness problem

- Output buffering is not behaving as a real printf.  For 
  example, if my program does
     printf("hello");
     printf("friend\n");
and I put a dprintf " my " on the second line, 
I would expect to see
   "hello my friend"
but instead I see
   " my hellofriend"
which shows that the dprintf string does not go to the same 
buffer as the real printfs, and is flushed earlier.
This also happens with the dprintf-style "agent"

Thanks 

Marc


  parent reply	other threads:[~2013-02-22 17:39 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-18 13:09 [RFC] PR 15075 dprintf interferes with "next" Yao Qi
2013-02-18 21:36 ` Joel Brobecker
2013-02-21 16:36 ` Tom Tromey
2013-04-24  1:24   ` Hui Zhu
2013-04-24  6:06     ` Keith Seitz
2013-04-24 13:30       ` Hui Zhu
2013-04-24 14:03         ` Yao Qi
2013-04-24 14:09           ` Hui Zhu
2013-05-16  7:29             ` Hui Zhu
2013-05-17 21:01               ` Pedro Alves
2013-05-22 10:22                 ` Hui Zhu
2013-05-22 12:46                   ` Pedro Alves
2013-05-28  0:02                     ` Hui Zhu
2013-05-28  3:36                       ` Yao Qi
2013-05-29 10:08                         ` Hui Zhu
2013-06-03  4:07                       ` Hui Zhu
2013-06-03 17:48                         ` Pedro Alves
2013-06-07  3:16                           ` Hui Zhu
2013-06-17  7:36                             ` Hui Zhu
2013-06-18 18:16                             ` Pedro Alves
2013-06-24  8:36                               ` Hui Zhu
2013-06-24 22:06                                 ` Pedro Alves
2013-06-25  9:14                                   ` Hui Zhu
2013-06-25 11:47                                     ` Pedro Alves
2013-06-25 13:02                                       ` Hui Zhu
2013-06-25 14:06                                         ` Pedro Alves
2013-06-26  2:54                                           ` Hui Zhu
2013-05-22 14:04                   ` Tom Tromey
2013-02-22 17:39 ` Marc Khouzam [this message]
2013-02-22 19:32   ` DPrintf feedback Tom Tromey
2013-02-22 20:37     ` Marc Khouzam
2013-02-26 21:12       ` Marc Khouzam
2013-02-28 15:32 ` [PATCH 1/4] Fix dprintf bugs Yao Qi
2013-02-28 13:17   ` [PATCH 3/4] Test dprintf breakpoint works correctly with other breakpoints Yao Qi
2013-02-28 13:17   ` [PATCH 2/4] Test case of conditional dprintf Yao Qi
2013-02-28 14:48   ` [PATCH 4/4] Test case on setting dprintf commands Yao Qi
2013-02-28 16:30   ` [PATCH 1/4] Fix dprintf bugs Eli Zaretskii
2013-03-07  7:45     ` Yao Qi
2013-03-03  2:21   ` Marc Khouzam
2013-03-07  6:47     ` Yao Qi
2013-03-07 14:06       ` Marc Khouzam
2013-03-07 14:36         ` Yao Qi
2013-03-07 14:49           ` Marc Khouzam
2013-03-07 14:59             ` Yao Qi
2013-03-08 15:49               ` Marc Khouzam

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=E59706EF8DB1D147B15BECA3322E4BDC0C3A1D@eusaamb103.ericsson.se \
    --to=marc.khouzam@ericsson.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    --cc=stanshebs@earthlink.net \
    --cc=tromey@redhat.com \
    --cc=yao@codesourcery.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