gdb調試


前期准備

  • 一般來說GDB主要調試的是C/C++的程序。在gdb調試之前,必須要把調試信息加到可執行文件中。使用編譯 器(cc/gcc/g++)的 -g 參數可以做到這一點。如:
gcc -g hello.c -o hello 
g++ -g hello.cpp -o hello 
  • 如果沒有-g,將看不見程序的函數名、變量名,所代替的全是運行時的內存地址。

啟動 gdb 有三種方式:

  • gdb
    program是可執行程序。
  • gdb core
    用gdb同時調試一個運行程序和core文件,core是程序非法執行后core dump后產生的文件。
  • gdb -p
    通過top得到要調試程序的pid,然后進行調試。

參數

GDB啟動時,可以加上一些GDB的啟動開關,詳細的開關可以用gdb -help查看。常用的參數:

-symbols <file> 
-s <file> 
從指定文件中讀取符號表。 

-se file 
從指定文件中讀取符號表信息,並把他用在可執行文件中。 

-core <file> 
-c <file> 
調試時core dump的core文件。 

-directory <directory> 
-d <directory> 
加入一個源文件的搜索路徑。默認搜索路徑是環境變量中PATH所定義的路徑。

當以gdb 方式啟動gdb后,gdb會在PATH路徑和當前目錄中搜索 的源文件 。 如要確認gdb是否讀到源文件,可使用l或list命令,看看gdb是否能列出源代碼。

運行時。可以設置下面四方面的事。

  • 程序運行參數。
    set args 可指定運行時參數(也可以指定配置文件)。(如:set args 10 20 30 40 50)
    show args 命令可以查看設置好的運行參數。
  • 運行環境。
    path 可設定程序的運行路徑。
    show paths 查看程序的運行路徑。
    set environment varname [=value] 設置環境變量。如:set env USER=hchen
    show environment [varname] 查看環境變量。
  • 工作目錄。
    cd 相當於shell的cd命令。
    pwd 顯示當前的所在目錄。
  • 程序的輸入輸出。
    info terminal 顯示你程序用到的終端的模式。
    使用重定向控制程序輸出。如:run > outfile
    tty命令可以指寫輸入輸出的終端設備。如:tty /dev/ttyb

具體來說就是
例如一個程序名為prog 參數為 -l a -C abc
則,運行

gcc/g++ -g  prog.c/cpp -o prog

就可以用gdb調試程序prog

gdb prog

進入gdb調試界面
輸入參數命令set args 后面加上程序所要用的參數,注意,不再帶有程序名,直接加參數,如:

set args -l a -C abc

回車后輸入
r
即可開始


免責聲明!

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



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