【发布时间】:2018-04-05 22:41:37
【问题描述】:
刚刚完成将代码库更新到 Swift 4。它在模拟器中运行良好。当我构建到设备时,我会立即崩溃,但没有错误消息:
在模拟器中运行良好。
上面有一些线程:
iOS app crashes with no error, just (lldb)
dyld`__abort_with_payload: With no error message
据我所知,问题可能是链接的二进制文件,但我已经深入研究了链接的二进制文件,我相信一切都正确链接。
关于从哪里开始调试或可能出现什么问题有什么想法吗?
更新 1:我有一个用于我的 xcodeproj 的内部框架,因此我尝试将其删除并将其安装为 pod,但错误仍然存在。
Update3 通过不是从 Xcode 而是手机本身启动应用程序来强制崩溃的错误跟踪,然后跟踪错误日志:
Termination Description: DYLD, Library not loaded: @rpath/PromiseKit.framework/PromiseKit | Referenced from: /var/containers/Bundle/Application/C50A937F-2A6F-4E5C-89C7-2D
Update4 删除 promisekit 框架后,应用程序的 shell 版本确实在设备上编译,这让我得出结论(就像其他遇到这个神秘问题的人一样)是框架链接错误。但是尝试了常见线程中的所有解决方案,例如:
iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta
没有成功。嵌入和链接或其他任何操作均无效。
所以这是某种框架链接错误,但链接和嵌入似乎无法解决问题。
【问题讨论】:
-
device 控制台日志中是否有任何可能提供线索的消息?您是否查看过应用程序包本身的 Frameworks 文件夹,看看是否有您期望的所有内容?
-
@PhillipMills 我已经研究过了,遗憾的是它很干净。没有崩溃日志。所发生的只是应用程序启动时出现初始屏幕并冻结。
-
(为了清楚起见,我不是指崩溃日志...我指的是选择设备时在 Xcode 的“设备”窗口底部显示的日志。)
-
@PhillipMills 我现在检查了几次,每次尝试启动应用程序时电话日志中都没有添加任何新内容。
-
扩展线程显示以查看第 1 层到第 4 层可能会有所帮助。这可能会提供线索 DYLD 代码中哪个条件失败。
标签: ios xcode lldb swift4 sigabrt