Segmentation fault (core dumped)

当在Linux系统中遇到Segmentation fault (core dumped)错误时,这表明进程异常终止。文章介绍了如何利用gdb调试工具进行问题排查,包括设置core文件大小、查看错误信息、分析可能的原因如内存越界、线程安全、指针问题和堆栈溢出等,并提供了SIGSEGV和SIGBUS信号的区别。
摘要由CSDN通过智能技术生成

在linux下变成有时会出现这样的情况,编译时没有error,但是执行时会出现Segmentation fault (core dumped)

core dumped就是核心转储,进程异常终止,进程用户空间的数据就会被写到磁盘。但是linux下一般不会产生core文件

需要用到gdb调试工具:

1、首先使用ulimit -a查看你的core file size是否为0.如果不是的话就请跳到步骤3, 如果是的话,请接着看下面的步骤。

2、然后使用ulimit -c 1024命令修改core file size。这里我们暂且把修改为1024吧。

      不放心的话可以再使用ulimit -a查看core file size

3、下面再次运行程序让其错误信息存储于core file并使用ll查看core file信息以便于使用gdb。

4、接下来我们使用gdb调试工具查看错误原因,使用命令gdb core-file core定位error(关于这一句命令,先使用ll命令查看是因为要知道你的core file名称才好使用gdb调试)。可以看到我的c++代码error应该是Program terminated with signal SIGSEGV, Segmentation fault.


可能原因

1.内存访问越界

 a) 由于使用错误的下标,导致数组访问越界

 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符

 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf, s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值