<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Jui-Nan Lin&#039;s Blog</provider_name><provider_url>https://jnlin.org</provider_url><author_name>jnlin</author_name><author_url>https://jnlin.org/author/jnlin/</author_url><title>FreeBSD 的 kernel debugging &amp; textdump(4)</title><html>&lt;p&gt;今天因為某組Web機器當機實在當太嚴重了，因為我們發現問題是出在NFS，所以我們把 KDB 跟 DDB 編進去準備來找問題。&lt;/p&gt;  &lt;p&gt;當發生問題的時候，由於機器不會當死，所以可以在Console按Ctrl-Alt-ESC進DDB。進了DDB以後，可以用textdump(4)來紀錄所下的指令以及其output。紀錄的資料會dump在dump device（通常是swap），等下次開機的時候會存到/var/crash裡面。&lt;/p&gt;  &lt;p&gt;大概的作法是這樣：&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;先Ctrl-Alt-ESC進DDB &lt;/li&gt;    &lt;li&gt;textdump set # 開始 textdump &lt;/li&gt;    &lt;li&gt;capture on # 下面的指令都要記錄下來 &lt;/li&gt;    &lt;li&gt;show allpcpu; bt; ps; alltrace; show alllock # 要紀錄的資訊 &lt;/li&gt;    &lt;li&gt;call doadump # dump到dump device &lt;/li&gt;    &lt;li&gt;reset # 重開機 &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;如果發現出來的結果會被截掉的話，要把textdump的capture buffer加大：&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;sysctl debug.ddb.capture.bufsize=196608&lt;/p&gt;&lt;/blockquote&gt;</html><type>rich</type></oembed>