第一,观察代码,寻找问题
第二,手工调试
1,观察代码,打印的方式(打印行号)调试
方式一,priintf("[%d]\n",_LINE_);
方式二,
代码中新增 (宏) #ifdef DEBUG
priintf("[%d]\n",_LINE_);
#endif
编译:gcc debugme.c -o debugme -DDEBUG
运行:./gebugme
扫描二维码关注公众号,回复:
3010122 查看本文章
此粗的错误为段错误:Segmentation fault
第三,利用 core dump 文件
1,core dumped :文件是发生段错误时的快照。
注:
core dumped 文件默认大小是0,也就是默认不产生的,ulimit -a:
需要去更改设置 ulimit -c unlimited
2.调试程序:添加 core 文件在后面:gdb ./debugme core(输出结果会指出程序哪里有问题)
注:core文件不一定准确
第四,gdb调试
以上方法都不行时,在使用gdb一步一步调试