Linux作業系統分析(6)- qemu+gdb調試linux核心

來源:互聯網
上載者:User

提要

   繼續學習Linux.

    今天要做是的搭建Linux的核心調試環境。

環境:Ubuntu13.04 gcc4.7.3

安裝QEMU

QEMU簡介

QEMU是一套由Fabrice Bellard所編寫的以GPL許可證分發源碼的類比處理器,在GNU/Linux平台上使用廣泛。Bochs,PearPC等與其類似,但不具備其許多特性,比如高速度及跨平台的特性,通過KQMEU這個開源的加速器,QEMU能類比至接近真實電腦的速度。

最簡單的方法就Ubuntu的軟體中心安裝:

找不到的話可以嘗試更新源,然後update。

其他發行版的linux可以從源碼進行安裝 - http://wiki.qemu.org/Main_Page。

編譯linux的核心

之前有一篇文章介紹核心編譯的,可以參考-Linux作業系統分析(4)- 更新核心與添加系統調用

這裡需要重新編譯一下,添加調試資訊。

首先下載最新版本的核心

https://www.kernel.org/pub/linux/kernel/v3.x/

下載linux-3.9.tar.gz

解壓後終端進入檔案夾,執行:

make menuconfig  

在Kernel hacking項目裡面將Compile the kernel with debug info和Compile the kernel with frame pointers,兩項勾選。這些項目可以讓編譯時間添加調試資訊,類似我們平時用的-g選項。

接著執行:

make -j2 bzImage

編譯核心,我的是雙核的cpu,所以是 -j2,四核的話 -j4。

進行調試

去http://wiki.qemu.org/Testing下載linux-0.2.img.bz2,解壓後丟到linux源碼的目錄下。

終端執行:

qemu -S -kernel arch/i386/boot/bzImage -hda linux-0.2.img -append "root=dev/hda"

# -kernel 用來指定核心,注arch/x86/bzImage是不帶調試資訊的核心,vmlinux是帶有調試資訊的核心.

#-hda 指定IDE硬碟

#-append  cmdline use 'cmdline' as kernel command line

之後彈出一個小黑視窗,qemu就算起來了。

ctrl+alt+1 與 ctrl+alt+2可以切換介面,前者是螢幕輸出,後者是qemu控制台

運行起來後是黑屏,我們要切換到控制台,用滑鼠點擊視窗,然後ctrl+alt+2,

在QEMU的命令列中 運行:

gdbserver tcp::1234

啟動gdbserver,並在tcp的1234連接埠監聽,-S表示在開始的時候凍結CPU直到遠端gdb輸入相應的控制命令

新起一個終端,用gdb調試vmlinux.

gdb vmlinux
target remote localhost:1234
設定一下斷點,跑一下。

軟體開發技巧

        現在 QEMU 已安裝並運行客戶作業系統,現在可以開始開發軟體。既可用模擬器下的原有編譯器,也可用主機上的跨編譯器。對於需要在客戶作業系統反覆編譯和測試軟體的大型開發項目,跨編譯器可能更快,但其安裝配置已超出本文範圍。模擬器下啟動並執行編譯器適合於小型項目,或不經常編譯軟體的項目。
對於軟體,電腦就像是目標平台的真執行個體子,可用於最實際的用途。一些特性,如位元組順序、CPU 一致性以及其他硬體基本特性就像在一台真實電腦上一樣運行正常。我使用過真實的 PowerPC Apple iMac 和基於 QEMU 的 PowerPC 系統開發與測試全域惟一標識符(GUID)分區表(GPT) fdisk 程式的 PowerPC 版本,該程式需要知道 CPU 的位元組順序,在我看來,基於 QEMU 的系統與真實的 iMac 別無二致,除了 QEMU 系統有些慢。
        這說明,如果深入探究,確實有些差異。例如,QEMU 的類比硬碟會返回 “QEMU HARDDISK” 的模式字串,與真實的硬碟不同。總的來說,QEMU 的虛擬硬碟有些過時;硬碟都是 PATA 或 Small Computer System Interface (SCSI) 裝置,這根據具體平台,視頻硬體也過時了。可以在 QEMU 文檔中找到虛擬硬體的詳細資料。請注意各個版本的詳細資料都不同。
       在 Linux 下,QEMU 會話佔用很少的 CPU 時間,除了客戶作業系統工作時。但 QEMU 會話會佔用指定給它的 RAM 容量。因此,從實際出發,需要給主機系統大量記憶體,尤其是打算同時運行多於一個或兩個 QEMU 會話時。

參考利用qemu進行核心源碼級調試 - http://blog.csdn.net/gdt_a20/article/details/7231652使用 QEMU 進行跨平台開發 - http://www.ibm.com/developerworks/cn/linux/l-qemu-development/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.