使用QEMU調試Linux內核代碼


http://blog.chinaunix.net/uid-20729583-id-1884617.html

http://www.linuxidc.com/Linux/2014-08/105510.htm

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

使用QEMU調試Linux內核代碼

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 的下載地址請點這里

本文永久更新鏈接地址http://www.linuxidc.com/Linux/2014-08/105510tm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM