gdb
所要測試的代碼如下
#include <stdio.h>int nGlobalVar = 0;int tempFunction(int a, int b) {printf("tempFunction is called, a = %d, b = %d /n", a, b); return (a + b); }int main() {int n;n = 1;n++;n--;nGlobalVar += 100;nGlobalVar -= 12; printf("n = %d, nGlobalVar = %d /n", n, nGlobalVar);n = tempFunction(1, 2);printf("n = %d", n);return 0; }啟動GDB
[ubuntu@VM-48-245-ubuntu ~/c_test]$ gdbfile命令載入被調試程序
(gdb-test是由gdb-test.c編譯出來的可執行文件)
注意 編譯時加入-g參數,輸出調試信息
gcc gdb-test.c -o gdb-test -gr命令執行(Run)被調試文件,因為尚未設置任何斷點,將直接執行到程序結束
(gdb) r Starting program: /home/ubuntu/c_test/gdb-test n = 1, nGlobalVar = 88 /ntempFunction is called, a = 1, b = 2 /nn = 3[Inferior 1 (process 3114) exited normally]“b”命令在 main 函數開頭設置一個斷點(Breakpoint)
(gdb) b main Breakpoint 1 at 0x400559再次使用“r”命令執行(Run)被調試程序:
(gdb) r Starting program: /home/ubuntu/c_test/gdb-test Breakpoint 1, main () at gdb-test.c:14 14 n = 1;面使用“s”命令(Step)執行下一行代碼
(gdb) s 15 n++;用“p”命令(Print)看一下變量 n 的值是不是 1
(gdb) p n $1 = 1“q”,退出(Quit)GDB調試環境:
(gdb) q A debugging session is active.Inferior 1 [process 4283] will be killed.Quit anyway? (y or n) y總結
- 上一篇: Python与MySQL
- 下一篇: JS的关键知识