Excellent, thank you.

On 7/8/05, Eric Schrock <eric.schrock at sun.com> wrote:
> 
> On Solaris, all debuggers attach to a process through proc(4). In
> particular, the debugger opens the 'ctl' file (typically O_EXCL). From
> there, the debugger can notify the process to stop (PCSTOP and friends)
> and then wait for an 'event of interest' (PCSTOP or PCWSTOP). The
> debugger can control which signals, system call entry/exit, and
> faults should generate such events.
> 
> The details on how this all works is documented in the proc(4) manpage,
> although the best source of information is the source itself. You may
> want to check out the following pages:
> 
> http://www.opensolaris.org/os/community/mdb/architecture
> http://www.opensolaris.org/os/community/observability/process/libproc
> http://www.opensolaris.org/os/community/observability/process/procfs
> 
> Which point to the associated source code. We're working on improving
> the community pages and associated documentation in this area.
> 
> - Eric
> 
> On Fri, Jul 08, 2005 at 03:06:25PM -0500, Tao Chen wrote:
> > Although none of these two commands is part of OpenSolaris, it's more of 
> a
> > question for general debugger tool I guess.
> >
> > On AIX, dbx command (comes with the base OS) uses SIGTRAP signal to 
> attach
> > to a running process.
> > Looking at the gdb AIX specific source (./gdb/aix-thread.c), it appears 
> to
> > use SIGTRAP also:
> >
> > /* Search through the list of all kernel threads for the thread
> > that has stopped on a SIGTRAP signal, and return its TID.
> > Return 0 if none found. */
> >
> > One issue we found is that when we dbx or gdb attach to the a process 
> with
> > one of its threads waiting on select() call,
> > the select() will be interrupted and returns -1 with errno set to EINTR.
> > I don't (yet) think this is an unexpected behaviour in itself, since 
> EINTR
> > is a legitimate errno when select() is interrupted by a signal.
> >
> > However this happens only on AIX and the reason (I think) might be that
> > dbx/gdb on other *nix doesn't use signal.
> >
> > How does the debuggers attach to running process in Solaris?
> > Through some interface of procfs? (which seems to be the case in gdb 
> source
> > : ./gdb/sol-thread.c ).
> > Maybe I can find more information in mdb doc/source?
> >
> > Thanks,
> > Tao
> 
> > _______________________________________________
> > observability-discuss mailing list
> > observability-discuss at opensolaris.org
> 
> --
> Eric Schrock, Solaris Kernel Development.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.opensolaris.org/pipermail/observability-discuss/attachments/20050708/0ba55ba4/attachment.html>

Reply via email to