我正在使用Xcode 4.3.1。崩溃发生在我的设备上,所以我连接它并打开管理器,转到我的设备日志,找到崩溃报告,这里是它的内容:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x3514488f __exceptionPreprocess + 163
1 libobjc.A.dylib 0x3656b259 objc_exception_throw + 33
2 CoreFoundation 0x35144789 +[NSException raise:format:] + 1
3 CoreFoundation 0x351447ab +[NSException raise:format:] + 35
4 CoreFoundation 0x350b168b -[__NSCFDictionary setObject:forKey:] + 235
5 myapp 0x0015b4a7 0xe8000 + 472231
6 myapp 0x0018add1 0xe8000 + 667089
7 myapp 0x0013cd5b 0xe8000 + 347483
8 Foundation 0x30ffb60d __NSFireTimer + 145
9 CoreFoundation 0x35118a33 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 15
10 CoreFoundation 0x35118699 __CFRunLoopDoTimer + 365
11 CoreFoundation 0x3511726f __CFRunLoopRun + 1207
12 CoreFoundation 0x3509a4a5 CFRunLoopRunSpecific + 301
13 CoreFoundation 0x3509a36d CFRunLoopRunInMode + 105
14 GraphicsServices 0x36396439 GSEventRunModal + 137
15 UIKit 0x32190e7d UIApplicationMain + 1081
16 myapp 0x000f6aff 0xe8000 + 60159
17 myapp 0x000e9370 0xe8000 + 4976
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x34f3832c __pthread_kill + 8
1 libsystem_c.dylib 0x36e34208 pthread_kill + 48
2 libsystem_c.dylib 0x36e2d298 abort + 88
3 libc++abi.dylib 0x30af9f64 abort_message + 40
4 libc++abi.dylib 0x30af7346 _ZL17default_terminatev + 18
5 libobjc.A.dylib 0x3656b350 _objc_terminate + 140
6 libc++abi.dylib 0x30af73be _ZL19safe_handler_callerPFvvE + 70
7 libc++abi.dylib 0x30af744a std::terminate() + 14
8 libc++abi.dylib 0x30af881e __cxa_rethrow + 82
9 libobjc.A.dylib 0x3656b2a2 objc_exception_rethrow + 6
10 CoreFoundation 0x3509a506 CFRunLoopRunSpecific + 398
11 CoreFoundation 0x3509a366 CFRunLoopRunInMode + 98
12 GraphicsServices 0x36396432 GSEventRunModal + 130
13 UIKit 0x32190e76 UIApplicationMain + 1074
14 myapp 0x000f6af8 0xe8000 + 60152
15 myapp 0x000e9368 0xe8000 + 4968
我以为Xcode会自动为我设置崩溃报告?为什么我没有获得任何行号或方法?为什么我的异常代码为0x00000000?
我尝试了the method found here,但是当我输入任何内存地址时,输出就是相同的内存地址。这是我可以从崩溃日志中获取的最多信息,还是这里有问题?
答案 0 :(得分:8)
要表示崩溃报告,您需要具有该确切构建的dSYM包。我想这是一个未归档的调试版本,因此下次构建应用程序时dSYM也会被覆盖。这就是组织者无法完全象征崩溃报告的原因。
您提到的方法仅在二进制文件没有剥离符号时才有效,即使这样,它也不会报告行号!因此,不要将其用于app二进制文件,而是将其与dSYM一起使用。也许你很幸运,新的dSYM仍然有一些有用的信息。
atos -arch armv7 -o 'appname.app.dSYM' 0x0015b4a7
崩溃本身可以将NSDictionary值设置为例如一把钥匙。
答案 1 :(得分:8)
希望这可以帮助其他人解决同样的问题,对我有用的是在归档目录中运行以下命令(看起来像/ Users / my_user / Library / Developer / Xcode / Archives / 2012-09- 24,所以先进入那里cd)
mdimport .
之后尝试运行symbolicatecrash脚本。在XCode中,转到您的管理器,设备日志,然后右键单击崩溃日志选择“重新符号化日志”。
答案 2 :(得分:4)
我无法通过将崩溃报告拖到管理器 - >设备 - >图库 - >设备日志中来使XCode 4.5.1符号化。
我也无法通过@Kerni上面的帖子指定dSYM
来获取崩溃的符号化地址。
我使用过atos
,但我只能通过在xcarchive
文件中指定符号文件的完整路径来实现它(实际上它是一个目录)。例如:
cd dir_where_the_xcarchive_is
atos -arch armv7 -o myApp\ 9-18-12\ 5.28\ PM.xcarchive/dSYMs/myApp.app.dSYM/Contents/Resources/DWARF/myApp 0x0001943a
答案 3 :(得分:1)
关于您关于例外代码的问题......
Exception Codes: 0x00000000, 0x00000000
... this Apple Technical Note可能会回答你的问题。简而言之,此崩溃报告不是由标准记录的崩溃类型生成的。
在崩溃日志中大约有16行,您将看到一条开始的行 文本后跟一个或多个十六进制值,即 特定于处理器的代码,可以为您提供更多信息 崩溃的本质。您可以从这些代码中了解该应用程序 由于编程错误而崩溃(例如,内存访问不良, 一个例外,等等,或者如果某个应用程序被终止 其他原因,例如:
异常代码 0x8badf00d 表示应用程序已经存在 iOS终止,因为发生了监视程序超时。应用程序 花了很长时间才启动,终止或响应系统事件。一 这种情况的常见原因是在主要上进行同步联网 线。异常代码 0xbad22222 表示VoIP 应用程序已被iOS终止,因为它也已恢复 经常。异常代码 0xdead10cc 表示一个 应用程序已被iOS终止,因为它保留在系统上 资源(如地址簿数据库)在运行时 背景。异常代码 0xdeadfa11 表示一个 应用程序已被用户强制退出。强制退出时发生 用户首先按住开/关按钮,直到“滑到关机” 出现,然后按住主页按钮。假设是合理的 用户已完成此操作因为应用程序已成为 反应迟钝,但不保证 - 强制戒烟对任何人都有效 应用
答案 4 :(得分:0)
请改用Crashlytics。
它提供即时(通过电子邮件通知)有关实时崩溃报告以及发生崩溃的确切行#。