如何在Mac OS X 10.14 Mojave中加载core dump文件?
解决Mac OS X 10.14 Mojave下GDB无法识别core文件的问题
问题背景
在Mac OS X 10.14 Mojave环境中,使用GDB加载core文件时触发错误:
"/cores/core.14192": no core file handler recognizes format
解决方案
1. 验证core文件有效性
先确认core文件是目标程序生成的有效文件:
file /cores/core.14192
输出需包含与broken_linked_list相关的程序信息,若显示文件损坏或不匹配,需重新运行程序触发段错误生成有效core文件。
2. 配置GDB适配MacOS core格式
若坚持使用GDB,尝试以下操作:
- 确保安装适配MacOS的GDB版本(推荐通过Homebrew安装最新版:
brew install gdb) - 启动GDB后先设置core文件处理格式,再加载core:
gdb broken_linked_list set target macosx-core core-file /cores/core.14192 - 若仍报错,需为GDB配置代码签名(MacOS对调试器有签名限制):
- 打开「钥匙串访问」创建代码签名证书
- 对GDB二进制文件签名:
codesign -fs "你的证书名称" /usr/local/bin/gdb - 重启终端或更新sudo配置后生效
3. 改用LLDB(推荐方案)
Apple官方的LLDB调试器对MacOS core文件支持更完善,无需额外配置:
lldb broken_linked_list -c /cores/core.14192
进入LLDB后常用调试命令:
bt:查看调用栈回溯frame select <序号>:切换到指定栈帧print <变量名>:打印变量值
4. 确认系统core dump配置正确
确保系统允许生成core文件:
- 设置core文件大小无限制:
ulimit -c unlimited - 配置core文件生成路径并开启core dump:
注:sudo sysctl kern.corefile=/cores/core.%P sudo sysctl kern.coredump=1%P表示用进程ID命名core文件,需保证/cores目录有写入权限。
内容的提问来源于stack exchange,提问作者nz_21
相关产品推荐
相关产品推荐

