-
错误代码
#include<iostream> using namespace std; int main(){ int num[10]; for(int i = 0; i < 10; i++){ cin >> num[i]; } for(int i = 9; i >= 0; i++){ cout << num[i] << endl; } return 0; } //很明显在第二个for循环会出现段错误,但当我们不知道具体哪个位置出现段错误时该怎么找到段错误具体位置呢
-
安装gdb调试工具
sudo apt-get install gdb
-
编译文件时用-g选项生成可调试的可执行文件
g++ -g 0.practice.cpp
-
通过gdb调试可执行文件./a.out(即编译源文件生成的可执行文件名)
gdb ./a.out
-
各种gdb命令
命令名称 命令缩写 作用 run r 开始执行程序 continue c 继续程序的运行,知道下一个断点 quit q 退出gdb模式 step s 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句 next n 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句) -
调试过程
r–>输入–>输入完回车
提示segment fault在文件第10行左右,段错误的位置就在这附近
本文参考https://blog.csdn.net/zdy0_2004/article/details/80102076
更多的gdb相关操作见上面链接