core dumped未生成core文件
一、检查并启用核心文件生成
-
查看当前核心文件大小限制:
- 使用命令
ulimit -c
来查看系统允许的核心文件大小。如果返回值为0,则表示不生成核心文件。
- 使用命令
-
临时设置无限制的核心文件大小:
- 在当前shell会话中执行
ulimit -c unlimited
可以临时移除对核心文件大小的限制,但这仅在当前shell会话期间有效。
- 在当前shell会话中执行
-
永久设置无限制的核心文件大小:
- 编辑用户主目录下的
.bashrc
文件,在文件末尾添加ulimit -c unlimited
。 - 然后通过命令
source ~/.bashrc
或重新启动终端使更改生效,这样可以确保每次登录时都自动应用此设置。
- 编辑用户主目录下的
二、指定核心文件生成路径
即使设置了无限制的核心文件大小,有时候还是看不到核心文件,这可能是由于核心文件被其他进程捕获或删除所致。因此需要明确指定核心文件的生成位置:
- 作为root用户执行:使用命令
echo core > /proc/sys/kernel/core_pattern
来设定核心文件名为“core”,并且将其放置在当前工作目录下。完成后退出root模式,再次运行有问题的程序应该就可以看到核心文件了。
三、使用GDB调试核心文件
一旦获得了核心文件,就可以利用GNU Debugger (GDB) 来分析问题原因:
- 启动GDB进行调试:例如,如果你有一个名为
test
的可执行文件,并且有一个名为core.1234
的核心文件,那么你可以用命令gdb test core.1234
开始调试。 - 常用GDB命令:
print var
:打印变量var
的值。l
(小写字母L):列出源代码中的出错部分,帮助定位问题所在。
Do not communicate by sharing memory; instead, share memory by communicating.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)