cvs commit: src/sys/ddb db_command.c db_output.c

Scott Long scottl at samsco.org
Mon Oct 3 10:31:38 PDT 2005


Nate Lawson wrote:
> Robert Watson wrote:
> 
>> On Sun, 2 Oct 2005, Olivier Houchard wrote:
>>
>>> cognet      2005-10-02 22:57:31 UTC
>>>
>>>  FreeBSD src repository
>>>
>>>  Modified files:
>>>    sys/ddb              db_command.c db_output.c
>>>  Log:
>>>  - Call db_setup_paging() for traceall.
>>>  - Make it so one can't call db_setup_paging() if it has already been 
>>> called
>>>  before. traceall needs this, or else the db_setup_paging() call from
>>>  db_trace_thread() will reset the printed line number, and override its
>>>  argument.
>>>  This is not perfect for traceall, because even if one presses 'q' 
>>> while in
>>>  the middle of printing a backtrace it will finish printing the 
>>> backtrace
>>>  before exiting, as db_trace_thread() won't be notified it should 
>>> stop, but
>>>  it is hard to do better without reworking the pager interface a lot 
>>> more.
>>
>>
>>
>> Thanks!
>>
>> Is there any chance I can interest you in an idea phk, I, and a few 
>> others have been kicking around for a bit relating to smart small 
>> dumps? Specifically, we were discussing the idea of allowing a dumping 
>> mode in which rather than dumping all of kernel memory, we dump 
>> specifically the common and useful output from ddb, such as ps, show 
>> locked vnods, show alllocks, traceall, show allpcpu, and so on, 
>> basically in text format, to the dump partition.  Then the results can 
>> be pulled off easily in a format that is appropriate for e-mailing or 
>> submitting via a PR, even without a full debugging kernel, etc.  Among 
>> other things, these dumps would be much, much smaller than a memory 
>> dump, meaning they could be kept around like log files 
>> (/var/log/crash.log.0, ...), be e-mailed to the sysadmin, etc.  It 
>> would require some new magic in DDB and the dumping code, but almost 
>> all of the logic to generate the information from DDB could be reused, 
>> perhaps via an alternative pager or debug output device :-).
> 
> 
> That's fine as a hack-around, but I hope that doesn't distract effort 
> from sparse kernel dumps.  If you throw out non-anonymous pages, buffer 
> cache, etc., you end up with a very small image to begin with.  Add in 
> gzip compression and it wouldn't be much larger than your uncompressed 
> logs.  Then you can run whatever info tools you want against the core 
> since no actual data is lost.
> 

Well, what Robert is talking about isn't really a 'dump' in the sense of 
using kgdb, it's more 'run every debugger command available and capture 
the output to disk' =-)  I can't recall if I've sent email on this 
before, but it would be neat if we had the following levels of dump:

0: all RAM
1: all KVM
2: all proc, thread, and pcb data

Scott




More information about the cvs-src mailing list