首次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;
}

 

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