gdb命令調試c程序

    一般開發c語言程序,都是在ide中編碼,調試也是使用集成環境,有時候,我們的程序是在文本編輯器中編寫的,這時候可能使用gcc編譯,然後運行可執行程序。遇到需要調試的場景,我們就需要藉助gdb命令了。

    gdb調試,不僅侷限於在linux上使用,只要機器上有gdb命令,在windows下也可以進行調試。我的機器上安裝了一個樹莓派的perl,使用strawberry-perl-5.32.0-64bit.msi進行的安裝,他自帶了一個c語言編譯運行的相關命令。所以可以在windows下進行gdb調試。

    gdb調試需要進行gcc編譯的時候加上-g參數。在運行程序的時候,不再直接運行,而是加上gdb命令:

    準備一個c程序:

    swapdemo.c

#include <stdio.h>
void swap(int *a,int *b)
{
  int tmp = *a;
  *a = *b;
  *b = tmp;
}
int main()
{
  int a = 3,b = 5;
  printf("before: a = %d,b = %d\n",a,b);
  swap(&a,&b);
  printf("after : a = %d,b = %d\n",a,b);
  return 0;
}

    編譯

Administrator@pail-pc ~/gdbdemo
$ gcc -g swapdemo.c

Administrator@pail-pc ~/gdbdemo
$ ls
a.exe  maptest.cpp  maptest.exe  swapdemo.c

    gdb調試:

    gdb a.exe

    

     進入了gdb調試命令行,我們可以進行如下的相關操作: 

命令 功能 備註
run 直接運行程序 簡寫r
start 開始調試,默認進入main函數第一行作爲斷點 簡寫st,與step的s作區分
next 下一行 簡寫n
step 單步調試,一般用於進入方法體內部 簡寫s
list 查看代碼 簡寫l
print 打印變量

簡寫p 

backtrace 查看棧幀 簡寫bt
frame 切換棧幀,後面跟棧序號,通常與backtrace配合使用,先查看,再切換 簡寫f
quit 退出 簡寫q

 

    調試命令截圖:

    run:

    

    start:

    

    next:

    

    step:

    

    list:

    

    print:

    

    backtrace && frame:

    

    quit :

    

    還有一些重要的命令,比如設置斷點break命令,它後面跟行號作爲參數,簡寫b。繼續 continue命令,運行程序到下一個斷點,簡寫c。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章