如何在macOS系统中正确配置以生成coredump转储文件
macOS 生成coredump额外配置步骤
修正
/cores目录写入权限
macOS默认/cores目录仅允许root用户写入,普通用户进程崩溃后无法写入core文件,执行以下命令开放写入权限:sudo chmod o+w /cores临时测试单次执行上述命令即可,若需重启后权限依然生效,可创建LaunchDaemon开机配置实现。
确认内核core文件存储路径配置
执行以下命令检查默认存储路径:sysctl kern.corefile正常输出应为
kern.corefile: /cores/core.%P,若配置错误可手动修正:sudo sysctl kern.corefile=/cores/core.%P需永久生效可将
kern.corefile=/cores/core.%P写入/etc/sysctl.conf文件(文件不存在则新建)。确认ulimit配置生效范围
ulimit -c unlimited仅作用于当前执行命令的shell会话,不可跨终端窗口设置后运行程序。若需永久生效,可将该命令写入你当前使用的zsh配置文件~/.zshrc,写入后执行source ~/.zshrc即可立即生效。处理系统完整性保护(SIP)限制
macOS 10.11及以上版本默认启用的SIP会限制core dump生成,可选择两种方案解决:- 方案一(不修改SIP):给自行编译的程序添加调试权限,执行命令:
codesign -s - --entitlements <(echo '<?xml version="1.0" encoding="UTF-8"?>
- 方案一(不修改SIP):给自行编译的程序添加调试权限,执行命令:
所有配置完成后重新运行测试程序,即可在/cores目录下看到生成的core文件。编译测试程序时可添加-g参数携带调试符号,方便后续对coredump进行调试分析。
内容的提问来源于stack exchange,提问作者calvin
相关产品推荐
相关产品推荐

