使用gdb進行調試入門篇

來源:互聯網
上載者:User

  今天介紹一下gdb,如果你是在UNIX平台下做軟體,你會發現GDB這個調試工具有比VC、BCB的圖形化調試器更強大的功能。

  GDB主要幫忙你完成下面四個方面的功能:

    1、啟動你的程式,可以按照你的自訂的要求隨心所欲的運行程式。
    2、可讓被調試的程式在你所指定的調置的斷點處停住。(斷點可以是條件運算式)
    3、當程式被停住時,可以檢查此時你的程式中所發生的事。
    4、動態改變你程式的執行環境。

  一般來說GDB主要調試的是C/C++的程式。要調試C/C++的程式,首先在編譯時間,我們必須要把調試資訊加到可執行檔中。使用編譯器(cc/gcc/g++)的 -g 參數可以做到這一點。如:

    > cc -g hello.c -o hello
    > g++ -g hello.cpp -o hello

  如果沒有-g,你將看不見程式的函數名、變數名,所代替的全是運行時的記憶體位址。當你用-g把調試資訊加入之後,並成功編譯目標代碼以後,讓我們來看看如何用gdb來調試他。  

  啟動GDB的方法有以下幾種:

    1、gdb <program>
       program也就是你的執行檔案,一般在目前的目錄下。

    2、gdb <program> core
       用gdb同時調試一個運行程式和core檔案,core是程式非法執行後core dump後產生的檔案。

    3、gdb <program> <PID>
       如果你的程式是一個服務程式,那麼你可以指定這個服務程式運行時的進程ID。gdb會自動attach上去,並調試他。program應該在PATH環境變數中搜尋得到。

  在啟動了gdb後,就可以開始使用gdb中命令了。如果希望查看都有哪些命令,可以輸入help進行查詢。

  下面簡單示範幾個小例子:

  樣本一:在進入函數func時,設定一個斷點。可以敲入break func,或是直接就是b func
    (gdb) b func
    Breakpoint 1 at 0x8048458: file hello.c, line 10.

  樣本二:敲入b按兩次TAB鍵,你會看到所有b打頭的命令:
    (gdb) b
    backtrace  break      bt

  樣本三:l(l命令相當於list,從第一行開始例出原碼)

  樣本四:r(運行程式) n(下一步) c(Continuing)

  樣本五:p i 查看變數i的值

  樣本六:bt 查看函數堆棧

  

  需要特別說明的是,在gdb中運行程式時,使用run命令,可能需要做以下的操作。

  1、程式運行參數。
    set args 可指定運行時參數。(如:set args 10 20 30 40 50)
    show args 命令可以查看設定好的運行參數。

  2、運行環境。
    path <dir> 可設定程式的運行路徑。
    show paths 查看程式的運行路徑。
    set environment varname [=value] 設定環境變數。如:set env USER=hchen
    show environment [varname] 查看環境變數。  

  3、工作目錄。
    cd <dir> 相當於shell的cd命令。
    pwd 顯示當前的所在目錄。

 

  4、程式的輸入輸出。
    info terminal 顯示你程式用到的終端的模式。
    使用重新導向控製程序輸出。如:run > outfile
    tty命令可以指寫輸入輸出的終端裝置。如:tty /dev/ttyb

 


  以上就是對gdb簡單的一個介紹,以後如果有機會會更詳細的介紹各種功能。請大家多多指教。

  註:如果希望瞭解更多關於gdb的知識,請看http://blog.csdn.net/haoel/article/details/2879。

 

 

 

聯繫我們

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