linux下c程式設計之gdb除錯
之前在個人微信公眾號寫了一篇關於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。
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
個人微信公眾號,感興趣可微信掃描下方二維碼加關注,每週都有新文章推送。