为什么我的崩溃报告没有符号化?

我正在使用Xcode 4.3.1。 崩溃发生在我的设备上,所以我连接它并打开组织者,去我的设备日志,find崩溃报告,这是它的内容:

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自动为我处理符号化崩溃报告? 为什么我没有得到任何行号或方法? 为什么我的exception代码是0x00000000?

我尝试了这里find的方法 ,但是当我input任何内存地址时,输出只是同一个内存地址。 这是我能从崩溃日志中得到的最多信息,还是在这里出了问题?

为了表示崩溃报告,您需要准确构build的dSYM软件包。 我想这是一个没有归档的debugging版本,所以下次构build应用程序时,dSYM也会被覆盖。 这就是为什么组织者不能完全象征崩溃报告。

你提到的方法只有在二进制文件没有被去除符号的情况下才有效,即使那样它也不会报告行号! 所以,而不是使用它的应用程序二进制文件,而是使用它与dSYM。 也许你很幸运,新的dSYM仍然有一些有用的信息。

atos -arch armv7 -o 'appname.app.dSYM' 0x0015b4a7

崩溃本身可以设置一个NSDictionary值,例如一个零键。

希望这可以帮助其他人有同样的问题,什么对我工作是在档案目录中运行以下命令(看起来像/ Users / my_user / Library / Developer / Xcode / Archives / 2012-09-24,所以先进入那里)

 mdimport . 

之后尝试运行symboliccrash脚本。 在XCode中,转到您的组织者,设备日志,并通过右键单击故障日志select“重新符号日志”。

通过将崩溃报告拖到pipe理器 – >设备 – >库 – >设备日志中,我无法使XCode 4.5.1符号化。

也不能通过dSYM指定每个post的dSYM来获得崩溃的符号地址。

我已经使用了atos ,但是我只能通过在xcarchive文件(实际上是一个目录)中指定符号文件的完整path来使其工作。 例:

 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 

关于你关于例外代码的问题…

 Exception Codes: 0x00000000, 0x00000000 

… 这个苹果技术说明可能回答你的问题。 简而言之,这个崩溃报告不是由一个标准的文件崩溃types生成的。

大约16行到崩溃日志中,您将看到一行以文本开头,后跟一个或多个hex值,这是处理器特定的代码,可能会提供有关崩溃性质的更多信息。 您可以从这些代码中知道,由于编程错误(例如,内存访问错误,exception等)导致应用程序崩溃,或者由于其他原因导致应用程序终止,例如:

exception代码0x8badf00d表示应用程序已被iOS终止,因为发生了看门狗超时。 应用程序花了太长时间才能启动,终止或响应系统事件。 一个常见的原因是在主线程上进行同步联网。 exception代码0xbad22222表示一个VoIP应用程序已被iOS终止,因为它恢复得太频繁。 exception代码0xdead10cc表示应用程序已被iOS终止,因为它在后台运行时保留在系统资源(如地址簿数据库)上。 exception代码0xdeadfa11表示应用程序已被用户强制退出。 当用户首先按住开/关button直到出现“滑动电源closures”,然后按住主页button时,强制退出。 假设用户已经这样做是合理的,因为应用程序没有响应,但是不能保证 – 强制退出可以在任何应用程序上运行。

改用Crashlytics 。

它提供即时(通过电子邮件通知)实时崩溃报告,以及发生崩溃的确切行号。