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

使用QEMU調試Linux內核代碼

Linux內核代碼的調試非常麻煩,一般都是加printk, 或者用JTAG調試。這裡的方法是用QEMU來調試Linux內核。因為QEMU自己實現了一個gdb server, 所以可以非常方便的使用gdb來調內核。

這對內核的學習也非常有幫助。

為了盡量不多花時間在QEMU設置上,這裡直接使用以下的內核image:

http://free-electrons.com/community/demos/qemu-arm-directfb/

1.  QEMU的安裝

 這個可以自己去QEMU的官網下載編譯,如果自己手頭上的發行版有對應QEMU的包的話那也可以直接安裝。

 CentOS的話參考前面的 CentOS rpm 額外包的源

2.  下載對應的內核映像

 從以下網址下載:http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/ 這裡面有一個vmlinuz-qemu-arm-2.6.20

3.  啟動QEMU

 使用如下命令啟動:

 $ qemu-system-arm -M versatilepb -m 16 -kernel vmlinuz-qemu-arm-2.6.20 -append "clocksource=pit quiet rw" -S -s

4.  調試內核

 這裡需要有一個包含調試信息的vmlinux文件,可以直接編譯http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/src/linux-2.6.20.tar.7z

如果自己不想編譯的話可以使用一個已編譯好的vmlinux文件:

------------------------------------------分割線------------------------------------------

FTP地址:ftp://ftp1.linuxidc.com

用戶名:ftp1.linuxidc.com

密碼:www.linuxidc.com

在 2014年LinuxIDC.com\8月\使用QEMU調試Linux內核代碼

下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm

------------------------------------------分割線------------------------------------------

 然後執行如下命令:

 $ arm-none-linux-gnueabi-gdb vmlinux

 在gdb的控制台輸入:

 (gdb) target remote :1234

 (gdb) b start_kernel

 (gdb) c

 這時候程序執行就會落在你設定的斷點start_kernel處。OK。這樣你就可以隨意調試內核代碼了!

Ubuntu 12.04之找不到Qemu命令 http://www.linuxidc.com/Linux/2012-11/73419.htm

Arch Linux上安裝QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htm

QEMU的翻譯框架及調試工具 http://www.linuxidc.com/Linux/2012-09/71211.htm

QEMU 的詳細介紹:請點這裡
QEMU 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved