方法一:
打印法
在可能出现错误的位置加入打印,前一句能够打印出来,
后一句打印不出来,问题就可以定位到两次打印中间的代码
方法二:
gdb调试法
1.编译代码时加入-g选项
gcc filename.c -g
2.使用gdb调试生成的代码
gdb a.out
3.gdb调试命令:
l 查看代码
b 函数名/行号 设置断点
r 运行代码
n 单步运行
c 直接运行到下一处断点
s 进入函数内部调试
p 变量名 查看变量对应的值
q 退出
方法三:
core文件调试法
1.配置core文件
2.ulimit -c unlimited
3.编译代码加入-g选项
gcc filename.c -g
4.运行代码使其产生段错误,段错误产生后会生成一个包含错误信息的core文件
5.gdb a.out core 找到错误产生的位置