On Sat, 30 Dec 2006, Karol Kwiatkowski wrote:

Robert Watson wrote:

On Sat, 30 Dec 2006, Karol Kwiatkowski wrote:

Robert Watson wrote:
P.S. out of curiosity - now that I have configured kernel with DDB and
KDB options, is there any performance penalty of running such kernel?

No, it shouldn't really have any effect on performance. The one thing to watch out for is that your system will no longer reboot automatically on a panic, as it will drop to the debugger, by default. You can change this by setting debug.debugger_on_panic to 0, in which case you will likely want to set debug.trace_on_panic to 1 so it prints a stack trace before rebooting (which is often sufficient, combined with the trap frame and panic message to debug the problem).

Right now these are sysctls, not tunables, but you can change the default using options KDB_UNATTENDED (which flips the default to not entering the debugger and rebooting) and options KDB_TRACE (which causes a trace to be printed on panic by default). Probably they should also be tunables so that loader.conf entries will work.

Great explanation, thank you. I turned on debugging on my desktop computer which, apart from normal every day use, is 'testing' STABLE by running it :) I'm perfectly fine with the defaults, at least for now.

BTW, I have added some new documentation to the Developer's Handbook on the various copmile-time kernel debugging options, what their impact is, etc:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/kerneldebug-options.html

The kernel debugging section of the Developer's Handbook seems to be getting a bit long in the tooth, I may have a chance to do some further updating of it this weekend. In particular, it seems to focus mostly on crash dumps, and many problems are more easily debugged using information in DDB.

BTW, if you're running X on your desktop, be aware that it's X that does all the video mode management. If your box enters the debugger while in X, the debugger doesn't know how to switch back to text mode (and X isn't running, obviously), so while you'll be talking to the debugger, the chances you'll see anything comprehensible are actually quite low. For this reason, I normally also use a serial console when debugging desktop boxes: I can always plug my notebook in with a serial cable to see why it's entered the debugger.

Right, I haven't thought about that. I guess without a serial console my best option is to set debug.debugger_on_panic to 0, debug.trace_on_panic to 1 and keep crash dump with kernel.debug for later examination, isn't it? The whole point of doing this, as I am not really experienced in debugging, is to have the information saved somewhere in case of a panic.

Yes -- if you have no firewire/serial console option (i.e., no extra notebook and null modem cable, or no serial port), then crash dumps are the best way to go. Setting the sysctls as above is good.

Something I've been thinking of doing for a while is adding a scripting facility to DDB, which would allow you to have a script of DDB commands run on crash but before the dump, displaying useful debugging information which would then appear in the dump itself...

Robert N M Watson
Computer Laboratory
University of Cambridge
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to