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>
