之前在個人微信公眾號寫了一篇關於linux下c程式設計之gcc編譯的文章,感興趣可關注我的個人微信公眾號,搜尋移動開發與網路安全技術棧加關注,或掃描本文末尾的微信二維碼加關注。

今天接著說下linux環境下c語言程式設計之gdb除錯。寫程式必不可少除錯,特別是邏輯很複雜,專案很大的情況下。除錯可以跟蹤程式碼執行,找出程式碼中較難發現的邏輯錯誤處,節省了毫無頭緒的分析程式碼的時間。

安裝gdb偵錯程式:

linux發行版的作業系統,如Ubuntu作業系統,都會預設安裝有gcc編譯器和gdb偵錯程式,如果沒有安裝可以在shell使用一些工具命令安裝。

Ubuntu下的安裝命令:apt-get install  gdb

CentOS下的安裝命令:yum install  gdb

本文使用的是centos 7


安裝過程如上圖所示,yum install gdb指令執行完後檢視gdb是否安裝成功,可在終端中輸入gdb -version


接著瞭解幾個簡單的gdb常用的指令:

gdb filename	#filename是可執行程式檔名,即編譯連結後的c程式。
b main	#main為可執行檔案中的方法名,即在main函式開始處下斷點。
b 6	#數字6為c檔案中程式碼行號,即在第六行程式碼處下斷點。
run	#執行程式。
n	#單步執行,遇到函式會進入到函式內部。
break	#停止除錯,停止程式。
quit	#退出gdb。

上一個例子看看?

首先使用vim編輯器寫一個簡單c程式,檔名為add.c,檔名隨便起的,沒有任何含義。在編輯器中輸入以下程式碼

#include <stdio.h>

int main(int lenght,char* argv[]){
int n=0;
int b=19;
int c=b/n;
printf("result is c=%d",c);
}
使用gcc編譯

gcc -g add.c -o add#將add.c編譯連結成可執行程式檔案


使用指令gdb add 進入到add可執行程式的gdb除錯環境。


接著就是給程式程式碼下斷點除錯了。

使用b main指令給add可執行程式的main方法下斷點。

使用run執行程式,程式執行後會停在main方法入口。

使用n單步執行。

當程式執行到第六行再往下執行行就會提示一個錯誤,Arithmetic exception(算術異常)。因為第6行程式碼中的除數為0。再接著往下執行程式就停止了。

正常情況下想停止除錯程式可用break。


下面是以行號下斷點的例子。


瞭解更多指令,請百度搜索gdb除錯指令,有很多博文都介紹到,不過有些博文寫的方法是gdb老版本的內容,最好是查詢官方文件。

關於Ubuntu環境下gdb的安裝及使用可參考:http://blog.csdn.net/misskissc/article/details/37727771。

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

個人微信公眾號,感興趣可微信掃描下方二維碼加關注,每週都有新文章推送。