On Sat, Jun 15, 2002 at 03:40:08PM -0700, Justin Wojdacki wrote:
> Daniel Jacobowitz wrote:
> > Wait, wait. What are you trying to do? Originally you were talking
> > about userspace debugging via gdbserver. Now you're talking about
> > kernel debugging via kgdb. They're separate (and coexisting can cause
> > problems if you are not careful with your exception handlers; I do not
> > remember when my patches to make that work went into the tree, or if
> > someone else did it).
> > gdbserver can just use TCP.
> > --
> > Daniel Jacobowitz Debian GNU/Linux Developer
> > MontaVista Software Carnegie Mellon University
> Sorry for the confusion. I've been discussing userspace debugging via
> gdbserver the entire time. However, I've noticed that gdbserver
> doesn't seem to be fully functional because the kernel doesn't seem to
> be handling the "BREAK 5" instruction correctly. You mentioned
> problems with board exception handling and I looked at the ddb series
> board support code. In there, I found handling for software
> breakpoints, and got the impression from the code that it was a
> general debugging interface, not just for kernel debugging. Again,
> sorry for the confusion.
> As it stands right now, when I get hit a "BREAK 5" instruction,
> gdbserver never get's a chance to handle it, as the kernel keeps
> scheduling the child process I'm trying to debug, and hitting the
> "BREAK 5" instruction over and over again. What I can't seem to find
> out is how gdbserver is supposed to get scheduled again.
What should happen is that the child receives a signal (SIGTRAP) after
the exception. Then it is scheduled again, drops into do_signal, and
the kernel notices that the traced bit is set and wakes the tracer. I'd
guess your board needs to do something different to deliver the SIGTRAP
properly, if that isn't happening.
Daniel Jacobowitz Debian GNU/Linux Developer
MontaVista Software Carnegie Mellon University