在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 學(xué)習(xí)方法與實踐 > 嵌入式Linux系統(tǒng)的GDB遠程調(diào)試的實現(xiàn)

            嵌入式Linux系統(tǒng)的GDB遠程調(diào)試的實現(xiàn)

            ——
            作者: 時間:2008-01-11 來源:電子產(chǎn)品世界 收藏

              遠程調(diào)試環(huán)境由宿主機GDB和目標(biāo)機調(diào)試stub共同構(gòu)成,兩者通過串口或TCP連接。使用GDB標(biāo)準(zhǔn)程串行協(xié)議協(xié)同工作,實現(xiàn)對目標(biāo)機上的系統(tǒng)內(nèi)核和上層應(yīng)用的監(jiān)控和調(diào)試功能。調(diào)試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機GDB和目標(biāo)機調(diào)試程序間的一個媒介而存在。

            本文引用地址:http://www.biyoush.com/article/76981.htm

              就目前而言,嵌入式Linux系統(tǒng)中,主要有三種遠程調(diào)試方法,分別適用于不同場合的調(diào)試工作:用ROM Monitor調(diào)試目標(biāo)機程序、用KGDB調(diào)試系統(tǒng)內(nèi)核和用gdbserver調(diào)試用戶空間程序。這三種調(diào)試方法的區(qū)別主要在于,目標(biāo)機遠程調(diào)試stub 的存在形式的不同,而其設(shè)計思路和實現(xiàn)方法則是大致相同的。

              而我們最常用的是調(diào)試應(yīng)用程序。就是采用gdb+gdbserver的方式進行調(diào)試。在很多情況下,用戶需要對一個應(yīng)用程序進行反復(fù)調(diào)試,特別是復(fù)雜的程序。采用GDB方法調(diào)試,由于嵌入式系統(tǒng)資源有限性,一般不能直接在目標(biāo)系統(tǒng)上進行調(diào)試,通常采用gdb+gdbserver的方式進行調(diào)試。 gdbserver在目標(biāo)系統(tǒng)中運行,GDB則在宿主機上運行。

              行GDB調(diào)試,目標(biāo)系統(tǒng)必須包括gdbserver程序,宿主機也必須安裝GDB程序。一般Linux發(fā)行版中都有一個可以運行的GDB,但開發(fā)人員不能直接使用該發(fā)行版中的GDB來做遠程調(diào)試,而要獲取GDB的源代碼包,針對arm平臺作一個簡單配置,重新編譯得到相應(yīng)GDB。GDB的源代碼包可以從 http: //ftp.cs.pu.edu.tw/linux/sourceware/gdb/releases/下載,最新版本為gdb-6.4。下載到某個目錄,筆者下載到自己的用戶目錄:/home/vicky。

              下載完后,進入/home/vicky目錄,配置編譯步驟如下:

            #tar jxvf gdb-6.4-tar-bz2
            #cd gdb-6.4
            #./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v
            #make
             
              這一步的時候可能會有問題,提示一個函數(shù)中(具體函數(shù)名不記得了)parse error,就是unsigned前邊多了一個”}”,你用vi進入那一行把它刪掉就行了。

            #make install
            #export PATH=$PATH:/usr/local/arm-gdb
            進入gdbserver目錄:
            #./configure --target=arm-linux –host=arm-linux
            #make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc

            (這一步要指定arm-linux-gcc的位置)
             
              沒有錯誤的話就在gdbserver目錄下生成gdbserver可執(zhí)行文件,把它燒寫到flash的根文件系統(tǒng)分區(qū),或通過nfs mount的方式都可以。只要保證gdbserver能在開發(fā)板上運行就行。

              下面就可以用gdb+gdbserver調(diào)試我們開發(fā)板上的程序了。在目標(biāo)板上運行g(shù)dbserver,其實就是在宿主機的minicom下,我的RedHat Linux裝在vmware下的。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(這里參數(shù)-o nolock可以不加,不加這一步執(zhí)行得反而更快些),hello和gdbserver都是位于Linux根目錄下,把主機根目錄掛在到開發(fā)板的/tmp 目錄下。

              要進行g(shù)db調(diào)試,首先要在目標(biāo)系統(tǒng)上啟動gdbserver服務(wù)。在gdbserver所在目錄下輸入命令:

            (minicom下)
            #cd /tmp
            #./gdbserver 192.168.2.100:2345 hello
             
            192.168.2.100為宿主機IP,在目標(biāo)系統(tǒng)的2345端口開啟了一個調(diào)試進程,hello為要調(diào)試的程序。

            出現(xiàn)提示:

            Process /tmp/hello created: pid=80
            Listening on port 2345
            (另一個終端下)
            #cd /
            #export PATH=$PATH:/usr/local/arm-gdb/bin
            #arm-linux-gdb hello
            (gdb) target remote 192.168.2.223:2345
            (192.168.2.223為開發(fā)板IP)
             
            出現(xiàn)提示:

            Remote debugging using 192.168.2.223:2345
            [New thread 80]
            [Switching to thread 80]
            0x40002a90 in ??()
            同時在minicom下提示:
            Remote debugging from host 192.168.2.100
            (gdb)
             
              連接成功,這時候就可以輸入各種GDB命令如list、run、next、step、break等進行程序調(diào)試了。

              以上針對通過nfs mount和tftp的方式,只能在主機上調(diào)試好后下載到開發(fā)板上運行,如果有錯誤要反復(fù)這個過程,繁瑣不說,有些程序只能在開發(fā)板上調(diào)試。所以筆者采用了gdbserver的遠程調(diào)試方式。希望對大家調(diào)試程序有用!(T004)



            關(guān)鍵詞:

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉