Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: "Juraj Oršulić" <juraj.orsulic@fer.hr>
To: Tom Tromey <tom@tromey.com>
Cc: "gdb@sourceware.org" <gdb@sourceware.org>
Subject: Re: "continue" in breakpoint commands breaks line-by-line stepping
Date: Thu, 16 Mar 2017 12:21:00 -0000	[thread overview]
Message-ID: <CAEPqvozg7=OsjYLhozHAKt2masLNahtKkvotR-+pHi4N9fjK6Q@mail.gmail.com> (raw)
In-Reply-To: <51b1626e27124e7f9b43603f0bb2a4dc@MAIL.fer.hr>

Thanks on the tips! In the end I went with a Python breakpoint,
because my logging was not a simple print, it was actually publishing
messages using ROS so I can visualize what's going on. I think a
simple note on that page, like "use the Python API for more complex
breakpoints without stopping and without breaking next", would have
pointed me in the right direction right away.

Greetings,
Juraj


On Thu, Mar 16, 2017 at 9:57 AM, Tom Tromey <tom@tromey.com> wrote:
>>>>>> "Juraj" == Juraj Oršulić <juraj.orsulic@fer.hr> writes:
>
> Juraj> Hi everyone, I have a quick question. I have added some breakpoint
> Juraj> commands for logging using the "commands" command. Since I don't want
> Juraj> to stop the execution in these points, I added a "continue", as
> Juraj> mentioned in https://sourceware.org/gdb/onlinedocs/gdb/Break-Commands.html.
> Juraj> However, this breaks stepping line-by-line in outer frames - if I
> Juraj> stumple upon one of these logging breakpoints, it issues a "continue",
> Juraj> and I lose control if I call "next" when I am in an outer frame. How
> Juraj> could I mitigate this? Perhaps by redefining "next" to set a temporary
> Juraj> breakpoint on the next line to ensure that I stop there? Should this
> Juraj> be the default behavior?
>
> There are a few reasonably good ways to deal with the
> "next-over-continue" issue.
>
> One way, specifically for logging, is to use the dprintf command instead
> of a breakpoint+commands.  dprintf doesn't have this problem.
>
> Another way, if you need something more generic, is to use Python to
> create your breakpoints and do your actions in the |stop| method.  This
> was introduced specifically to deal with this problem.
>
> A third way, specific to modifying a variable, is not to do this:
>
>     b x
>     commands
>       silent
>       set y = 73
>       cont
>     end
>
> but instead:
>
>     b x if y = 73, 1
>
> Breakpoint conditions are evaluated at a different time and don't affect
> "next"ing.
>
> I think it would be good if the "Break Commands" documentation was
> updated to mention dprintf and the variable setting scenario, and to
> point out the next-over-continue problem.
>
> Maybe gdb could introduce some kind of flag to "continue" to breakpoints
> to solve this problem more generally.
>
> Tom


      parent reply	other threads:[~2017-03-16 12:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-10  8:25 Juraj Oršulić
2017-03-16  8:58 ` Tom Tromey
2017-03-16 12:53   ` Tom Tromey
     [not found] ` <51b1626e27124e7f9b43603f0bb2a4dc@MAIL.fer.hr>
2017-03-16 12:21   ` Juraj Oršulić [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='CAEPqvozg7=OsjYLhozHAKt2masLNahtKkvotR-+pHi4N9fjK6Q@mail.gmail.com' \
    --to=juraj.orsulic@fer.hr \
    --cc=gdb@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