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

MacOS SSH远程LLDB调试自定义程序报错:process exited with status -1

SSH连接Sonoma 14(arm64)调试x86_64程序时lldb报错process exited with status -1

遇到的情况

通过SSH连接到arm64架构的MacOS Sonoma 14主机,用lldb调试自己用clang编译的程序时,执行run命令会弹出报错:

(lldb) error: process exited with status -1 (no such process.)

但调试苹果官方签名的系统程序(比如/bin/ls)完全正常,初步判断问题和程序签名权限有关。

已试过但没用的操作

  • 按照苹果官方文档给程序做自签名
  • 添加包含com.apple.security.get-task-allow权限的entitlements(Xcode编译的签名程序用的配置如下):
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.application-identifier</key>
        <string></string>
        <key>com.apple.security.get-task-allow</key>
        <true/>
    </dict>
    </plist>
    
  • 用sudo启动lldb
  • 执行sudo DevToolsSecurity --enable开启开发者工具权限
  • 执行spctl developer-mode enable-terminal开启终端开发者模式

排查后的关键结论

  • 把/bin/ls复制出来重新自签名后,能正常调用task_for_pid;但自己写的程序调用这个接口时返回(os/kern) failure错误
  • 只有同时满足以下两个条件才会触发这个问题:
    1. 可执行程序是x86_64架构(编译成arm64架构就不会有异常)
    2. 程序放在NFS挂载的目录里(放在本地APFS目录下调试完全正常)

测试用的极简代码:

#include <iostream>

int main() {
  std::cout << "Hello, World!\n";
  return 0;
}

可行的解决办法

  1. 把程序移到本地APFS目录调试:NFS挂载目录对x86_64程序的签名验证有特殊限制,复制到本地磁盘后再用lldb调试就能正常运行。
  2. 直接编译成arm64架构:如果不需要兼容x86_64,编译时给clang加-arch arm64参数生成arm64程序,就算放在NFS目录也能正常调试。
  3. 调整NFS挂载参数:挂载NFS时尝试添加noacl参数关闭ACL权限检查,部分场景下能绕过权限验证问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:36:12