歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

Linux內核調試工具:Kdb應用指南(4)

  作者:胡風華     雜項    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進行調試,在較短的時間內完成了調試任務。




Copyright © Linux教程網 All Rights Reserved