【发布时间】:2011-08-02 00:08:36
【问题描述】:
我有一个 iOS 应用,在 XCode 4.0.1 中有以下(选定的)构建设置:
- 架构 = 标准 (armv6 armv7)
- 基础 SDK = 最新 iOS (iOS 4.3)
- iOS 部署目标 = iOS3.1
- 其他链接器标志 = -lxml2 -weak-library /usr/lib/libSystem.B.dylib
在 Targets/Build Phases 下,我将 libSystem.B.dylib 作为可选(将二进制文件与库链接)。
在第一代 iPod Touch 上,我得到以下结果:
- 调试构建,C/C++ 编译器版本 = LLVM 编译器 2.0,一切正常
- Ad Hoc Release Build,C/C++ 编译器版本 = GCC 4.2,一切正常
- Ad Hoc Release Build,C/C++ 编译器版本 = LLVM GCC 4.2,一切正常
- Ad Hoc Release Build,C/C++ 编译器版本 = LLVM 编译器 2.0,启动几秒钟后崩溃。
在案例 4. 中,崩溃报告如下所示:
Incident Identifier: 10B8B9C5-0FA5-4C83-AB13-4C3F59D5962D
CrashReporter Key: 29f7901a33e9b055c9034cd051902ea0c87e61f6
Process: TPE [1484]
Path: /var/mobile/Applications/4FA4C8CA-DB5D-4096-8458-C76382E68D02/TPE.app/TPE
Identifier: TPE
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2011-04-09 17:56:58.188 +1000
OS Version: iPhone OS 3.1.3 (7E18)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000
Crashed Thread: 0
Thread 0 Crashed:
0 libSystem.B.dylib 0000000000 0 + 0
Thread 1:
0 libSystem.B.dylib 0x00001488 mach_msg_trap + 20
1 libSystem.B.dylib 0x00004064 mach_msg + 60
etc.
在我的代码中的一些例程执行后发生崩溃(我可以看到控制台输出确认它)。
有没有人知道什么会导致它在 GCC4.2 下工作,但在 LLVM2 下崩溃?
【问题讨论】:
-
通常,当代码在调试而不是在发布时工作时,您正在调用未定义行为的愤怒。除非您共享代码,否则我们无能为力。
-
但是要分享什么代码?我看不到任何东西表明这是在哪里爆炸。此外,唯一在工作和不工作之间发生变化的是我选择构建的编译器 - 再次强调,除非您对要搜索的内容有任何提示,否则它并不指向任何特定代码?
标签: ios compiler-construction build xcode4 llvm