基於Qt Creator和gdb的遠端偵錯

來源:互聯網
上載者:User
描述:我的開發板照片
圖片:

    環境:虛擬機器Fedora12同《Fedora12下搭建Qt Creator的arm開發環境 並 移植Qt4.6.2到Micro2440》

    軟體準備:

    參照《Fedora12下搭建Qt Creator的arm開發環境 並 移植Qt4.6.2到Micro2440》移植Qt4.6.3,Qt Creator升級為2.0.1,其他一切不變。

    網上下載gdb-7.0.tar.gz,google一下,忘了在哪下的了。

    *環境的搭建與《Fedora12下搭建Qt Creator的arm開發環境 並 移植Qt4.6.2到Micro2440》文章同,這裡不再闡述,對軟體路徑不清楚的請參照上面這篇文章……

    1、將下載的gdb-7.0.tar.gz減壓到一個目錄下,如/root/tmp/gdb-7.0

    開啟終端命令列,進入/root/tmp/gdb-7.0目錄,執行命令

    #./configure --target=arm-linux --prefix=/usr/local/gdb-arm
–v

    #make

    #make install

    我在這裡沒有遇到錯誤,編譯完畢gdb會被安裝到/usr/local/gdb-arm。

    2、編譯gdbserver(參照/root/tmp/gdb-7.0/gdb/gdbserver目錄下README檔案)

    進入/root/tmp/gdb-7.0/gdb/gdbserver目錄

    #cd /root/tmp/gdb-7.0/gdb/gdbserver

    執行下面命令

    #export PATH=$PATH:/usr/local/gdb-arm

    #export CC=/opt/toolchains/arm920t-eabi/bin/arm-linux-gcc

    #./configure --target=arm-linux --host=arm-linux

    #make CC=/opt/toolchains/arm920t-eabi/bin/arm-linux-gcc

    編譯完畢將目錄下的gdbserver可執行檔複製到/root/tmp/rootfs_qtopia_qt4/bin目錄下,即我們的NFS啟動根目錄下。放在bin檔案夾下是方便我們直接在終端下執行gdbserver命令。

    3、調試

    我們已textedit這個demos為例,如果你不知道如何使用Qt Creator編譯器,請參照上面的那片文章。

    這裡我將textedit這個demos複製到了/root/tmp/rootfs_qtopia_qt4/home/plg目錄下。

    使用Qt Creator開啟工程(雙擊textedit.pro即可)。

    3.1、配置工程

    點擊左側邊欄按鈕Projects(即那個檔案夾表徵圖的按鈕)在Build Settings配置介面下

    設定Edit build configuration為Qt4.6.3-arm Debug,及編譯環境為Qt4.6.3的arm環境的Debug模式下。

    設定Build directory為/root/tmp/rootfs_qtopia_qt4/home/plg/textedit,即將textedit後面的那一長串東東(-build-desktop)刪除,其他不變。

    切回Edit(點擊那個Edit按鈕),Build工程,視情況Rebuild工程。如配置無誤,編譯過程很順利。我在此未碰到問題。

    3.2、啟動調試

    編譯完成,通過NFS啟動系統。(這裡我的虛擬機器ip為192.168.1.1,開發板ip為192.168.1.70)

    3.2.1、Minicom下進入/home/plg/textedit目錄,執行命令

    #gdbserver 192.168.1.1:2345 textedit -qws &

    註:這裡的“&”符號可以避免程式獨佔終端而無法執行其他命令,如果程式僵死,我們也可以使用ps和kill命令殺死。“192.168.1.1:2345”為虛擬機器的ip地址和用於遠端偵錯的連接埠號碼,這個連接埠號碼應設定為未被佔用的,不然會出錯。“-qws”意思textedit以GuiServer的模式啟動,如果有其他Qt4.6.3的程式啟動,這個參數就不需要了(也可以QApplication app(argc, argv,QApplication::GuiServer);設定程式以GuiServer啟動,這樣就不需要-qws參數了),自己試一下就明白了,關於這個問題google吧!

    程式正確啟動會在minicom中顯示

    Process textedit created; pid = 750

    Listening on port 2345

    字面意思很好理解的。

    3.2.2、切換Qt Creator為Debug模式,點擊工具列Debug—〉Start Debugging—〉Start and Attach to Remote Application…命令代開Start Debugger視窗

    單擊Browse…按鈕設定Debugger為“/usr/local/gdb-arm/bin/arm-linux-gdb”,即我們前面編輯gdb(arm-linux-gdb)的安裝路徑;

    單擊Browse…按鈕設定Local executable為“/root/tmp/rootfs_qtopia_qt4/home/plg/textedit/textedit”,即我們編譯好的textedit例子的可執行檔;

    在Host and port中鍵入“192.168.1.70:2345”,即我們的開發板ip地址和連接埠號碼;

    選擇Architecture為“i386”。

    OK!單擊OK按鈕開始調試(別忘了提前設定好斷點),配置無誤至此應該一切順利……

    看看minicom應該有一些反饋資訊,我的是“gdbserver: error initializing thread_db library: version mismatch between libthread_db and libpthread”,暫時沒有影響我的調試工作,暫不予追究,那位高手知道的話請給予指導

聯繫我們

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