核心转储未写入 Mac OS Monterey 的 /cores

Core Dumps aren't written to /cores on Mac OS Monterey

我已经为此苦苦思索了一段时间。显然是这样读的:Where are core dumps written on Mac?

this which lead to this.

这样我们就 100% 清楚了:

我做到了:

touch  /cores/x
rm /cores/x

所以写权限是好的。

做过

ulimit -c unlimited

因此应该生成核心。

但即使是微不足道的:

sleep 100 & killall -SIGSEGV sleep

不生成核心。我目前的赌注是 OS 的文件系统保护功能之一让我很伤心。另一种可能性是这与 ARM 有关(运行 on an M1 Max)。

任何想法都非常欢迎......我什至尝试过这个失败:(Mac) leave core file where the executable is instead of /cores?

我目前在 Mac OS 蒙特雷。 https://developer.apple.com/forums/thread/694233?answerId=695943022#695943022 中建议的解决方案对我有用。

快速总结:现在需要为每个可执行文件.

启用com.apple.security.get-task-allow授权

示例cat

  1. 先复制一份。必需,因为 cat 在只读文件系统上。

    % cp $(which cat) cat-copy
    
  2. 使用 com.apple.security.get-task-allow 权利集创建虚拟 .entitlements

    % /usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" tmp.entitlements
    File Doesn't Exist, Will Create: tmp.entitlements
    
  3. 使用这些权利重新签署 cat-copy

    % codesign -s - -f --entitlements tmp.entitlements cat-copy 
    CrashSelf: replacing existing signature