0

当我在 Xcode 9.1 中构建我的 macOS 应用程序的 Debug Build 并将其移动到运行 macOS 10.11 或 10.12 的 Mac 上进行测试时,我发现我的应用程序的 XPC 进程在加载时崩溃,并且崩溃报告表明原因是系统在旧系统中找不到新的 sanitizer 框架。好的,我知道这些框架在旧 macOS 版本中不存在。而且,如果我在 Xcode中方案的Run > Diagnosics部分禁用 Address Sanitizer、Thread Sanitizer 和 Undefined Behavior Sanitizer ,然后重新构建,问题就解决了。

这里有些事情没有意义。为什么Xcode Scheme的Run部分明显影响Build?为什么只有XPC进程崩溃?

4

1 回答 1

1

为什么 Xcode Scheme 的 Run 部分显然会影响 Build?

这确实没有意义,但可能有一个简单的解释。较旧的代码诊断工具(API 检查器、malloc 检查器等)不需要重新编译,因此将它们放入 Run 是有意义的。消毒剂也是诊断工具,因此开发人员认为最好将它们放在同一个菜单中并强制人们重新构建应用程序。

为什么只有XPC进程崩溃?

我在这里猜测,但 Asan 初始化通常非常复杂,特别是在其他库初始化之后可能会发生。可能是主进程在初始化 Asan 之前启动了 XPC 子进程。

于 2017-12-29T17:06:40.387 回答