作者:胡風華 雜項 id:指令反匯編 格式:id <vaddr> 從vaddr開始的地址反匯編指令。 cpu:切換到另一個CPU 格式:cpu <cpunum> 這條命令僅僅在SMP結構下有用,它切換到由cpunum指定的CPU。 ps:顯示所有活動的進程 格式:ps 顯示當前的活動的進程。包括pid、父進程pid、CPU號、當前狀態,以及對應的線程。 reboot:重新啟動機器 格式:reboot 在某些情況下,內核無法返回到正常工作狀態,這時可以利用reboot重新啟動機器。注意在重啟機器前,它不進行任何狀態保存的工作。 sections:列出內核中所有已知的段的信息 格式:sections 列出模塊和內核的所有已知的段的信息。首先是模塊信息,最後是內核信息。包括模塊名和一個或者多個段的信息。段信息包括段名、段起始地址、段結束地址和段標識。本命令僅僅是為外部調試器而設立的。 sr:激活SysRq代碼,也就是調用MAGIC_SYSRQ函數 格式:sr <sysrq key> 將sysrq key字符作為參數傳遞給SysRq函數進行處理,就像你已經鍵入了SysRq鍵和該字符一樣。如果要使用這個命令,需要在配置內核時,選擇Magic SysRq Key。然後在新內核啟動後,使用如下命令激活SysRq功能。 #echo “1” > /proc/sys/kernel/sysrq 這是一個功能強大的命令,它使得在kdb中可以使用操作系統提供的SysRq處理函數。 lsmod:列出內核中加載的所有模塊 格式:lsmod 顯示所有模塊的信息。包括模塊名、模塊大小、模塊結構地址、引用計數,以及被哪個模塊所引用。 rmmod:卸載一個模塊 格式:rmmod <modname> 將由modname指定的模塊從內核中卸載。 ll:對鏈表中的每個元素重復執行命令 格式:ll <addr> <link-offset> <cmd> 它對以地址addr開頭的鏈表的頭link-offset個元素,重復執行cmd命令。 help和?:顯示幫助信息。 格式:help 或者? 顯示kdb的命令以及簡單的用法。 提高調試效率 kdb是一個強大的內核調試工具,gdb需要兩台機器通過串口才能進行調試,而kdb只需要一台機器即可進行調試,對於普通用戶來說,是非常方便的。對於編寫內核程序(譬如可加載模塊)的程序員來說,kdb提供的這些命令使得調試工作難度大大降低,使得調試效率得以提高。另外對於內核感興趣的人可以使用kdb來查看內核的數據結構和運行狀態,從而加深對內核的理解。不足之處是kdb無法提供源碼級的調試,要求程序員有一定的匯編程序基礎。但總的來說,kdb提供了一種強有力的內核調試手段,筆者在開發內核模塊時,使用kdb進行調試,在較短的時間內完成了調試任務。