You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Core Dump与Crash Report是否相同?MacOS生成核心转储疑问

MacOS下生成Core Dump的正确操作

你之前没生成成功是因为MacOS默认关闭了core dump的生成,得先开启:

  • 临时生效(重启终端后失效):
    运行命令:ulimit -c unlimited,它把core文件的大小限制改为无上限,默认值是0,所以根本不会生成core dump。
  • 永久生效:
    打开你使用的shell配置文件,比如~/.zshrc(若用zsh)或~/.bash_profile(若用bash),添加一行ulimit -c unlimited,保存后要么重启终端,要么运行source ~/.zshrc让配置立即生效。

之后重新执行你的测试命令:

sleep 100 &
killall -SIGSEGV sleep

此时当前目录会生成core.<进程ID>格式的core dump文件,比如core.4567。

Crash Report与Core Dump的区别

二者并不完全相同,核心差异如下:

  • 内容与格式:
    • Core dump是进程崩溃瞬间的完整内存镜像,二进制格式,包含进程当时的所有内存数据、寄存器状态、栈帧信息,必须用lldb、gdb这类调试工具加载才能分析。
    • Crash report是系统生成的结构化文本报告,除了崩溃信号、进程ID等基础信息,还会给出符号化后的调用栈(直接能看到崩溃发生在哪个函数、哪个库),同时包含系统环境、加载的第三方库信息,无需工具就能直接阅读。
  • 生成条件:
    • Core dump必须手动开启ulimit -c限制,且只有进程收到允许生成core的信号(如SIGSEGV、SIGABRT)时才会产生,默认关闭。
    • Crash report由MacOS的CrashReporter服务自动生成,不管core dump是否开启,只要进程崩溃就会生成,默认开启,存储在~/Library/Logs/DiagnosticReports/目录下,也可通过Console.app查看。
  • 使用场景:
    • Core dump适合深度调试,比如要排查崩溃时某个变量的具体值、内存中的异常数据,还原完整崩溃现场,是开发人员解决复杂问题的工具。
    • Crash report适合快速定位问题,无需调试工具,通过调用栈就能大致判断崩溃位置,不管是开发人员快速排查,还是普通用户提交问题反馈都适用。

内容的提问来源于stack exchange,提问作者tadm123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:54:59