首次gdb調試

以下面的代碼(見文末,第6行明顯是非法訪問)爲例,分如下幾步介紹gdb的使用:

目錄

編譯採用-g flag

運行和退出

bt(backtrace)調用堆棧回溯


編譯採用-g flag

編譯時,應加上-g 標識,否則回溯將不能顯示具體的崩潰位置:

g++ main.cpp -g -o main.out

 否則調用gdb後,界面提示"No Debugging Symbols Found...",即使採用了bt回溯,也定位不了崩潰位置,只能籠統的定位在main.cpp(見紅線所示):

運行和退出

用gdb ./main.out啓動gdb 之後,輸入r,啓動程序。

輸入q退出gdb

bt(backtrace)調用堆棧回溯

 輸入bt進行回溯。下面是正常的調試效果(採用了-g標誌),回溯到了main.cpp第六行,也就是非法訪問之處。

附代碼:

#include <stdio.h>

int main(void)
{
    char * p = NULL;
    printf("%s\n", p);

    return 0;
}

 

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