目录
1.初遇问题:
今天学习GBD调试时,遇到了这个问题:
首先,进行测试的是以下代码:
很显然,一旦运行这个代码将会报错,因为temp指针指向的是一个空地址,而我们却在这个地址所在的地方赋值10.
下面我运行代码,显示:段错误
然而奇怪的是在当前目录下并没有生成core文件???这是什么原因呢?
2.解决方法:
(1)初步排查
搜索csdn, 大部分人都是说没有开启core dump, 检测方法如下:
ulimit -a
可以看到我画红色下划线的地方结果为unlimited, 而不是0, 说明我的问题并不在这里.
如果出现这里显示的为0, 解决方法为: 在命令行输入
ulimit -c unlimited
即可启用core dump.
(2)问题深入
跟随以下步骤进行解决:
1.查看手册
man 5 core
2定位路径
看到大约在40行, 显示出了一个路径 /proc/sys/kernel/
3.定位文件
然后我们移动到该目录下,看到了一个名为core_pattern的文件
4.查看文件
我们打开文件,发现显示的结果如下
5.修改文件
使用超用户命令对文本内容进行修改
sudo vi core_pattern
6.完成
以上步骤完成后,回到刚刚最开始的执行测试代码阶段
现在我们发现在出现段错误后, 原目录下生成了core.4100的文件, 该问题已解决.
参考: