How to enter DDB through a terminal server / remote console ... ?

Vivek Khera vivek at khera.org
Thu Jun 29 14:31:40 UTC 2006


On Jun 28, 2006, at 6:28 PM, Robert Watson wrote:

>
> On Wed, 28 Jun 2006, User Freebsd wrote:
>
>> 'k, now that I'm up to 3 6-STABLE servers that are deadlocking,  
>> I'm spending time with the remote tech today to get a serial  
>> console put online ... how do I drop into DDB remotely, where the  
>> serial console is going through a Portmaster Terminal server?   
>> issuing CTL-ALT-ESC, I doubt, will work, will it?
>
> If configured to use a serial console (console="comconsole" in  
> loader.conf), you can enter the debugger with BREAK_TO_DEBUGGER in  
> the kernel config by sending a serial break.  With my portmasters,  
> I telnet to a TCP port to connect to the serial console, so I send  
> a telnet break, using ^]send break.

I *used* to set BREAK_TO_DEBUGGER also, but I discovered (the hard,  
painful, revenue-costing way) that if you ever power cycle a Cyclades  
TS1000 terminal server, it sends a break signal down each and every  
serial line attached to it.

So, now I configure my debuggering in the kernel like this:

# Kernel debugging
options         KDB                     #Enable the kernel debugger
options         KDB_TRACE
options         KDB_UNATTENDED
# Enable the ddb debugger backend.
options         DDB
# break on sequence CR ~ ^b
options         ALT_BREAK_TO_DEBUGGER


This lets me get the best of both worlds.  It is amazing that the CR  
~ ^b sequence will respond even when the box itself is totally  
unresponsive due to some runaway process or other shortage of memory  
condition.

Another thing you may wish to consider is adding option SW_WATCHDOG  
then running the watchdog daemon.  It may help you by panicking your  
way out of deadlock automatically.  You could also investigate  
getting a hardware watchdog card that works with watchdogd.



More information about the freebsd-stable mailing list