gdb調試工具的使用

      爲了將原來有錯的程序,找出問題所在,因修改源代碼,輸出正確的程序,對於剛學linux的菜鳥來說,使用gdb調試錯誤的信息再合適不過了,如果你是c語言的高手的話,就不必看下述內容了,因爲這僅僅適合菜鳥調試幾十行代碼使用的工具。

       下面我就舉例爲大家說明怎樣使用好gdb調試,找到錯誤的信息

#include <stido.h>

#include <string.h>

#include <stdlib.h>


int display1(char *string);

int display2(char *string);


int main()

{

    char string[] = "hallo world";

    display1(string);

    display2(string);

}


int display1(char *string)

{

    printf("The original string is %s\n",string);

}


int diaplay2(char *string1)

{

    char *string2;

    int size,i;

    size = (char *)malloc(size+1);

    for(i = 0 ; i < size; i++)

    {

        string2[size - i] = string[i];

    }

    string2[size+1] = ' ';

    printf("the string after is %s\n",string2);

    free(string2);

}    

    當代碼輸入後,進行編譯使用gcc -g test.c test   然後./a.out  發現結果並不是我們想要的結果,應該出現 一行是hello world 另一行是hallo world的倒敘輸出,可是發現第二行卻是爲空,這個時候我們就可以採用gdb調試來進行錯誤的查重了。

    首先在上述操作命令的基礎之上,在終端面板上輸入gcc test,進入了gcc調試模式,這時我們可以採用命令l來查看源代碼,然後對源代碼設置斷點b + 行數1,b + 行數2,設置好兩個斷點之後,查看斷點信息我們使用info b命令,然後在運行代碼使用r 這時候我們可以採用單步運行的命令n來逐步的進行代碼的運行,查看運行的信息,如果這樣並不能夠查出錯誤信息的話,我們可以進行對變量查看信息,使用 p + 變量名,這時可以看到變量在此時的運行信息,在上述程序中,我們對string2[0]進行查看信息的時候發現string2[0]並沒有值給他,這時string2[0]就會一直爲 NULL,故並不會輸出結果,找到錯誤後,退出gdb,使用命令q,重新編輯test.c 改爲string2[size - i -1] = string[i];重新編譯gcc -g test.c test  ./a.out 最後查看運行結果,發現是你想要的結果,好了,簡單的gdb調試已經結束了。再見!

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