mac查看core dump设置需依次检查:sysctl kern.coredump(值为1才启用)、sysctl kern.corefile(确认路径如/cores/core.%p)、ulimit -c(非0才允许生成)、及信号默认动作为core(如sigsegv、sigquit)。

Mac终端中查看系统核心转储(core dump)设置,需确认内核是否启用core dump、当前保存路径、文件大小限制及触发信号类型——这些参数不通过图形界面暴露,必须用命令逐层检查。
确认系统是否允许生成core dump
macOS默认禁用core dump,需检查内核参数是否包含coredump或sysctl开关已开启:
在终端中执行:sysctl kern.corefile,若返回值为kern.corefile: /cores/core.%P,说明路径已配置;若返回kern.corefile: /dev/null,表示被显式禁用。
再运行:sysctl kern.coredump,输出kern.coredump: 1代表启用,0代表完全关闭——【该值为0时,任何信号都不会产生core文件】。
查看当前core dump保存路径与命名规则
执行:sysctl kern.corefile,观察输出格式:
常见有效路径如/cores/core.%P(%P代表进程PID)、/cores/core.%N.%P(%N为进程名);
若路径以/dev/null结尾,或含core.%P但实际/cores目录不存在或无写入权限,core dump仍不会落地——【必须确保目标目录存在且当前用户有写权限,否则系统静默丢弃】。
检查ulimit对core文件大小的硬性限制
终端中输入:ulimit -c,返回数字即为当前shell会话允许生成的core文件最大字节数:
0 表示禁止生成(最常见默认值);
unlimited 表示不限大小;
其他正整数(如1048576)表示上限为1MB。
注意:该限制仅作用于当前终端启动的进程,不影响系统级服务;修改需用ulimit -c unlimited,但重启终端后失效。
验证哪些信号实际会触发core dump
macOS沿用BSD信号语义,但部分信号行为受SIP或沙盒限制:
方法一:查手册确认默认动作
在终端运行:man 3 signal,搜索SIGSEGV、SIGABRT、SIGQUIT等条目,看其“Default Action”是否为Core。
方法二:实测验证(需谨慎)
① 先确保ulimit -c非0且kern.coredump=1;
② 运行:kill -QUIT $$(向当前shell发SIGQUIT);
③ 立即检查/cores/目录是否有新文件生成:ls -t /cores/ | head -n1;
若无文件,说明路径不可写、SIP拦截或进程被沙盒保护——【GUI应用和App Store应用即使满足所有条件,通常也无法生成core dump】。











