我使用 Xcode 6.3.2 开发了一个 iPad 应用程序。 我将我的应用程序提交到 App Store 进行审核,但由于崩溃而被拒绝。以下是来自 iTunes 的崩溃报告。
Incident Identifier: 88DD7F94-3382-4241-A0D7-C3E7F6D20737
CrashReporter Key: 9881ae0cc3b3fbfccfd0ce1496d2fa08fec08782
Hardware Model: xxx
Path: /private/var/mobile/Containers/Bundle/Application/FDBBD67F-0EF7-43FB-80CB-8308A10A2D29/Vehicle Visuals.app/Vehicle Visuals
Identifier: com.vehiclevisuals.Vehicle-Visuals
Version: 2.0.0 (1.1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2015-06-12 12:33:57.988 -0700
Launch Time: 2015-06-12 12:22:14.581 -0700
OS Version: iOS 8.3 (12F69)
Report Version: 105
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x0000000195da7bdc 0x195d8c000 + 113628
1 QuartzCore 0x00000001889fdc2c 0x1889ec000 + 72748
2 Vehicle Visuals 0x0000000100126828 0x1000ec000 + 239656
3 Vehicle Visuals 0x0000000100101e80 0x1000ec000 + 89728
4 UIKit 0x0000000189118778 0x1890a4000 + 477048
5 UIKit 0x0000000189116750 0x1890a4000 + 468816
6 UIKit 0x0000000189112000 0x1890a4000 + 450560
7 UIKit 0x00000001890b175c 0x1890a4000 + 55132
8 QuartzCore 0x00000001889f9e18 0x1889ec000 + 56856
9 QuartzCore 0x00000001889f4880 0x1889ec000 + 34944
10 QuartzCore 0x00000001889f4724 0x1889ec000 + 34596
11 QuartzCore 0x00000001889f3eb8 0x1889ec000 + 32440
12 QuartzCore 0x00000001889f3c38 0x1889ec000 + 31800
13 UIKit 0x0000000189137f8c 0x1890a4000 + 606092
14 UIKit 0x0000000189137ef0 0x1890a4000 + 605936
15 CoreFoundation 0x000000018462c2a0 0x18454c000 + 918176
16 CoreFoundation 0x000000018462922c 0x18454c000 + 905772
17 CoreFoundation 0x000000018462955c 0x18454c000 + 906588
18 CoreFoundation 0x00000001845552d0 0x18454c000 + 37584
19 GraphicsServices 0x000000018dc436f8 0x18dc38000 + 46840
20 UIKit 0x000000018911afa8 0x1890a4000 + 487336
21 Vehicle Visuals 0x000000010013a1cc 0x1000ec000 + 319948
22 libdyld.dylib 0x0000000196412a04 0x196410000 + 10756
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
根据报告,它在操作系统版本:iOS 8.3 (12F69) 上崩溃。 我在所有模拟器(iPad Air、iPad 2、iPad Retina)上用相同的配置(iOS 8.3 版(12F69))测试了我的应用程序,还在我的设备(iPad mini)上用 iOS 8.3 版(12F69)测试了它,但没有撞到我这边了。 但是它在我 friend 的相同 iOS 版本的 iPad Air 上崩溃了(它给出了相同的崩溃报告,但有不同的无效地址,如下所示)
Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000020 Triggered by Thread: 0
我没有 iPad Air,所以我可以使用该设备进行调试。
我还尝试使用以下命令来符号化崩溃报告。
xcrun atos -o VehicleVisuals 0x0000000000000020
但它只给了我以下十六进制代码。
0x00000020 (in VehicleVisuals)
我正在关注 Link用于符号化。
我只是无法识别崩溃问题的实际位置。 请问有人能帮帮我吗?
最佳答案
EXC_BAD_ACCESS 通常是因为您正在向无效内存地址发送 Obj-C 消息,这意味着您可能正在尝试访问某个已释放的对象。
它可能在其他设备上工作,因为这个对象没有同时被释放。
我最近发生了类似的崩溃,因为 dealloc 上有一个计时器没有失效,并且当调用目标方法时,该对象不再存在。
您可以尝试启用 NSZombie 对象并查看是否找到正在释放的对象。在 xCode 6 中,您可以在 Product > Scheme > Edit scheme > Diagnostics > Enable Zombie Objects 中启用它们。
此外,还有很多此类错误是 NSZombieEnabled 无法检测到的。不幸的是,没有什么神奇的方法可以解决它。第二种选择是使用仪器(特别是内存泄漏)运行您的应用程序,看看是否可以得到一些东西。如果这不起作用,您将不得不检查您的代码并检查您是否有可能尝试访问已释放的对象。希望对您有所帮助。
祝你好运!
关于ios - KERN_INVALID_ADDRESS 位于 0x0000000000000000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913984/