Current CVS version makes it really fun to debug the libraries ...
(ok, "almost" :-)
Beyond the fact that we finally document all debugging
related features (mostly environment variables; checkout "man lesstif"
and our HTML docs) we finally have some enhancements to offer:
- block files from the DEBUG_SOURCES list:
export DEBUG_SOURCES=all:-Vendor:-XmString.c
will (given debugging support was compiled in) produce debugging
output for all, but the Vendor.c and XmString.c sources
- you may now send debugging output (DEBUG_FILE) unbuffered
to stdin, stderr as well as an ordinary file.
- you want to debug a complex, but the crash can hardly be located within
a few megabytes of debug output?
No problem anymore! Turn on debugging "just in time".
Here's an example written for a bash shell:
1) assume we want to get debugging info from all files but XmString.c written to
some
file foo.log and to wait until the application has been started up and some
non-critical actions have been performed. A signal SIGUSR1 which exists on
your
system is not used by the application:
export DEBUG_SOURCES=all:-XmString
export DEBUG_FILE=foo.log
export DEBUG_TOGGLE=off
export DEBUG_SIGNAL=SIGUSR1
2) start app "xmfoo" and get it's <pid>
xmfoo
3) get the application in the desired state to start debugging
4) send a SIGUSR1 to the xmfoo process
kill -s SIGUSR1 <pid>
5) produce the desired output by performing the critical actions
6) end debugging by sending SIGUSR1 again
Since this was recently introduced our debugging facility was sometimes
broken in our CVS version. Meanwhile it's hopefully working as before
and even "better", of course :-)
---
Alexander Mai
[EMAIL PROTECTED]