一. 何爲gdb網絡
1. UNIX及UNIX-like下的調試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調試,但若是你是在 UNIX平臺下作軟件,你會發現GDB這個調試工具相比於VC、真的優勢是具備修復網絡斷點以及恢復連接等功能,比BCB的圖形化調試器有更強大的功能。所謂「尺有所短,寸有所長」就是這個道理。ide
2. 總的來講,GDB, 又稱GNU調試器,是用來幫助調試咱們程序的工具工具
二. gdb 有何用測試
1. GDB能夠幹如下幾件事:
1.1. 給程序設置(特定條件下的)斷點
1.2. 當程序停在斷點處時,咱們查看全部變量、寄存器的值
1.3. 當程序停在斷點處時,咱們除了能查看全部變量、寄存器的值之外,還能在不改變源代碼的狀況下改變這些值(這個確實屌)優化
2. GDB 經常使用命令spa
三. gdb的使用3d
1. gbd 基本語法調試
1.1. 先寫一個test.c code
1 #include <stdio.h> 2 int main() 3 { 4 int a = 1; 5 int b = a; 6 printf("a = %d, b = %d\n",a, b); 7 return 0; 8 9 }
1.2. 編譯文件blog
gcc -o test test.c -g
1.2.1. 加上-g選項之後,gcc在編譯是會作如下額外的操做:
1. 建立符號表,符號表包含了程序中使用的變量名稱的列表。
2. 關閉全部的優化機制,以便程序執行過程當中嚴格按照原來的C代碼進行。
1.3. 進入gdb
1.4. 經常使用命令使用
1.4.1. start
1. 用start開始單步調試,程序從main開始
1.4.2. 單步執行<n>
1.4.3. gdb斷點調試
1.4.4. gdb 設置觀察點
2. 使用gdb 定位段錯誤
2.1. 編寫一個帶有段錯誤的程序
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(int argc, char *argv[]) 5 { 6 int a =1; 7 int b = 0; 8 printf("a/b = %d\n",a/b); 9 return 0; 10 }
2.1.1. 編譯程序,及執行
2.2. 測試流程