一般來說
gdb主要除錯的是
c/c++
的程式。要除錯
c/c++
的程式,首先在編譯時,我們必須要把除錯資訊加到可執行檔案中。使用編譯器(
cc/gcc/g++
)的-g
引數可以做到這一點。如:
> gcc -g hello.c -o hello
> g++ -g hello.cpp -o hello
如果沒有
-g,你將看不見程式的函式名、變數名,所代替的全是執行時的記憶體位址。當你用
-g把除錯資訊加入之後,並成功編譯目標**以後,讓我們來看看如何用
gdb來除錯他。
啟動gdb的方法有以下幾種: 1
、gdb
program
也就是你的執行檔案,一般在當前目錄下。 2
、gdb core
用gdb
同時除錯乙個執行程式和
core
檔案,core
是程式非法執行後
core dump
後產生的檔案。 3
、gdb
如果你的程式是乙個服務程式,那麼你可以指定這個服務程式執行時的程序id。
gdb會自動
attach
上去,並除錯他。
program
應該在path
環境變數中搜尋得到。
示例一:在進入函式
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除錯例子
2010 06 15 除錯乙個在正執行的c程式 工作中會遇到需要debug乙個執行中的c程序,debug步驟 1.ps ef grep 找到程序的pid 2.gdb p 用gdb關聯 這個c程序 3.dir 關聯源程式的目錄位置 4.b c 行號 或者 b 方法名 設定斷點 5.c 完成程式執行 6...
gdb中文亂碼 GDB 使用gdb檢視記憶體
一 使用gdb檢視記憶體 命令 x nfu x 是 examine 的縮寫 n表示要顯示的記憶體單元的個數 f表示顯示方式 x 按十六進製制格式顯示變數 d 按十進位制格式顯示變數 u 按十進位制格式顯示無符號整型 o 按八進位制格式顯示變數 t 按二進位制格式顯示變數 a 按十六進製制格式顯示變數...
linux c 小程式 gdb除錯命令 例子
1 除錯函式的一系列命令,源 如下main.c include int add range int low,int high int main void 結果為55 5015 與正確結果不同,除錯如下 1步驟 gcc g main.c o main linux下c原始檔編譯 含有源 可以除錯 gdb...