使用gdb進行調試入門篇


  今天介紹一下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。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM