stas 2003/02/28 23:06:48
Modified: src/docs/2.0/devel/debug c.pod Log: more various debug notes Revision Changes Path 1.6 +51 -0 modperl-docs/src/docs/2.0/devel/debug/c.pod Index: c.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/devel/debug/c.pod,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- c.pod 1 Mar 2003 06:49:21 -0000 1.5 +++ c.pod 1 Mar 2003 07:06:48 -0000 1.6 @@ -735,6 +735,57 @@ from reaping it. So, you could hit the clients/threads limit if you segfault a lot. +=head1 Debugging Threaded MPMs + + +=head2 Useful Information from gdb Manual + +Debugging programs with multiple threads: +http://sources.redhat.com/gdb/current/onlinedocs/gdb_5.html#SEC25 + +Stopping and starting multi-thread programs: +http://sources.redhat.com/gdb/current/onlinedocs/gdb_6.html#SEC40 + +=head2 libpthread + +when using: + + set auto-solib-add 0 + +make sure to: + + sharedlibrary libpthread + +(or whatever the shared library is used on your OS) without which you +may have problems to debug the threaded mpm mod_perl. + + + +=head1 Defining and Using Custom gdb Macros + +GDB provides two ways to store sequences of commands for execution as +a unit: user-defined commands and command files. See: +http://sources.redhat.com/gdb/current/onlinedocs/gdb_21.html + +Apache 2.0 source comes with a nice pack of macros and can be found in +I<httpd-2.0/.gdbinit>. To use it issue: + + gdb> source /wherever/httpd-2.0/.gdbinit + +Now if for example you want to dump the contents of the bucket +brigade, you can do: + + gdb> dump_brigade my_brigade + +where C<my_brigade> is the pointer to the bucket brigade that you want +to debug. + +mod_perl 1.0 has a similar file (I<modperl/.gdbinit>) mainly including +handy macros for dumping Perl datastructures, however it works only +with non-threaded Perls. But otherwise it's useful in debugging +mod_perl 2.0 as well. + + =head1 Expanding C Macros Perl, mod_perl and httpd C code makes an extensive use of C macros,