Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* Non-stop debugging and automatically stopping the target
@ 2008-04-10 17:59 Daniel Jacobowitz
  2008-04-10 18:00 ` Joel Brobecker
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel Jacobowitz @ 2008-04-10 17:59 UTC (permalink / raw)
  To: gdb; +Cc: Nick Roberts

This is a followup to Nick's backtrace patch of April 1st, which
temporarily stops the target to generate a backtrace.  It raises an
issue which Pedro and Volodya have also noticed, and I think we should
discuss it before we commit to any option.  The general issue is
this: should GDB implicitly stop the target?

For instance, consider memory reads.  Reading memory while the target
is running divides roughly into these types:

  - Can't do it.  GDB has to stop the target first.  Reading memory
    via ptrace is in this category.

  - Can do it, mildly intrusively (5ms - 10ms delay in execution).
    Some embedded debug interfaces are like this; the CPU is used to
    assist the debug interface, so while it's processing debug
    requests the target does not make progress.

  - Can do it, as long as some other thread is stopped.  Ptrace on a
    multi-threaded program is in this category, generally.  It doesn't
    matter which thread is stopped.

  - Can do it, pretty much transparently to the target.  Some embedded
    debug interfaces are like this; so is reading memory via /proc
    on a multi-processor Linux system.

Then of course there are race conditions.  Even if we can read memory
non-intrusively, we probably can't get a consistent snapshot of memory
for long enough to generate a backtrace; the current function will
return in the middle of the unwinding process.  So for backtrace, the
target is going to have to stop.

Under which of these conditions should we allow the user to say
"backtrace" or "x/x ADDR", and under which should we require the user
(or front end) to say "stop thread 3; backtrace; continue thread 3"?
I am a little worried about making backtrace always work even if it
has to pause the target; some targets should not be paused without
explicit request, if they're time sensitive.  Or maybe time-sensitive
should be a setting the user or front end has to make.

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-04-10 18:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-10 17:59 Non-stop debugging and automatically stopping the target Daniel Jacobowitz
2008-04-10 18:00 ` Joel Brobecker
2008-04-10 18:10   ` Daniel Jacobowitz
2008-04-10 18:24     ` Joel Brobecker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox