使用kgdb進行Linux核心調試(未完成!)

來源:互聯網
上載者:User

Linux核心調試


本篇文章將介紹如何進行Linux的核心調試,我們的環境如下:

主機:Ubuntu 11.04

虛擬機器:VirtualBox的Ubuntu11.04


首先做如下準備工作:

1.

主機和虛擬機器之間要可以共用檔案,我用的是Samba,參見:http://blog.csdn.net/htttw/article/details/7216149

2. 

主機和虛擬機器要可以通過串口通訊,參見:http://blog.csdn.net/htttw/article/details/7221510



本次實驗就相當於對之前實驗的小小總結啦~~



準備完之後,就可以開始了:



1.

首先我們先準備好核心鏡像bzImage和Busybox檔案系統initrd.gz,製作方法可以參考:

http://blog.csdn.net/htttw/article/details/7215858


這裡我們為了加快編譯bzImage的速度,所以精簡了Linux核心,具體參考:http://blog.csdn.net/htttw/article/details/7262239



2.

在主機上開啟minicon:

minicon



3.

第一步的兩個檔案準備好後就可以啟動虛擬機器了,出現grub菜單,以前的實驗都是按“c”後進入grub命令模式,然後輸入“linux”,“initrd”來指定核心鏡像和檔案系統,這對於本實驗是不夠的,我們還需要把虛擬機器的輸出資訊通過串口送到我們的主機上,但我摸索了很久還是沒有找到如何在grub命令模式下設定串口的命令,所以,我們換另一鐘方法:

在grub菜單中選擇一項功能表項目,按“e”編輯該功能表項目,把原有的命令全部刪除,然後輸入以下語句:

linux /boot/bzImage console=tty0 console=ttyS0, 115200initrd /boot/initrd.gz

就可以了,然後按F10啟動。



4.

這樣的話,在我們主機的minicom中就會出現虛擬機器從串口輸出的資訊啦~~

而且,在虛擬機器進入Busybox後,直接在主機的minicom中輸入命令就可以直接操作虛擬機器啦,~~


以上的操作全部在主機的minicom中完成


5





由於我的筆記本沒有串口,所以在gdb中執行target remote /dev/ttyS0時會出錯!錯誤資訊:/dev/ttyS0 輸入/輸出錯誤,所以我們可以把具名管道/tmp/vbox重新導向到某個連接埠,然後就可以啦,我們使用socat命令:

sudo apt-get install socat
socat tcp4-listen:8888 /tmp/vbox

表示把具名管道/tmp/vbox的輸出重新導向到tcp的8888連接埠

然後在gdb中輸入:

set remotebaud 115200

target remote tcp:localhost:8888

就可以了

後面呢?


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.