error: failed to attach to process named: "" unable to start the exception ...

1,037 阅读1分钟

之所以报如上错误,是因为脱离 Xcode 通过手机 debugserver 调试App需要附加相应App的进程,然后手机端 debugserverentitlement.plist 文件缺少该权限的标识。

  1. 获取Mac上的 debugserver

应用程序 -> Xcode -> 显示包内容 -> ...,找到 DeveloperDiskImage.dmg 这个镜像文件 打开 DeveloperDiskImage.dmg ,找到 /usr/bin/debugserver

  1. 查看是否包含 task_for_pid 标识 将 debugserver 备份至桌面执行:ldid -e ~/Desktop/debugserver,可以清晰的看到键值对中并无 task_for_pid 标识。

  2. debugserver 添加 task_for_pid 权限

执行 touch entitlement.plist 创建plist文件,执行 vi entitlement.plist,复制粘贴如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/ PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
</dict>
</plist>
  1. 替换 debugserverentitlements.plist 文件 执行如下命令: codesign -s - --entitlements entitlement.plist -f debugserver 再次查看 debugserverentitlements.plist 文件已包含 task_for_pid 权限。

  2. 将重签名后的 debugserver copy到手机上 执行如下命令: scp -p 开放的端口号 debugserver root@USB地址:/usr/bin/

此时所有工作就完成,即可脱离xcode进行debug调试。