linux段错误的调试方法
相关博文:
http://blog.csdn.net/htianlong/article/details/7439030
http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html
http://www.cnblogs.com/panfeng412/archive/2011/10/24/2222413.html
http://hi.baidu.com/zmohadnaadbfntr/item/5732180d816c1d813c42e211
如下面的的程序就会产生段错误
cs.c
- #include <stdio.h>
- int main(void)
- {
- int *p = NULL;
- *p = 10;
- return 0;
- }
Makefile
- CFLAGS=-Wall
- CC=gcc
- cs:cs.o
- $(CC) cs.o -o cs
- cs.o:cs.c
- $(CC) -c -o cs.o cs.c
- clean:
- $(RM) *.o
- .PHONY:clean
执行命令
make
./cs
输出结果
调试方法:
- 切换到root用户 su root
- 执行 ulimit -a
- 执行 ulimit -c unlimited
- 更改Makefile文件 在-Wall后增加 -g
- 执行 make
- 执行 ./cs 目的 生成core文件
- 执行 gdb ./cs core
- 执行quit 退出gdb
- ctrl d 切换回普通用户