为什么我的崩溃报告没有象征意义?

Sno*_*man 13 iphone xcode objective-c ios

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我以为Xcode会自动为我设置崩溃报告?为什么我没有获得任何行号或方法?为什么我的异常代码为0x00000000?

我尝试了这里找到的方法,但是当我键入任何内存地址时,输出就是相同的内存地址.这是我可以从崩溃日志中获取的最多信息,还是这里有问题?

Ker*_*rni 8

要表示崩溃报告,您需要具有该确切构建的dSYM包.我想这是一个未归档的调试版本,因此下次构建应用程序时dSYM也会被覆盖.这就是组织者无法完全象征崩溃报告的原因.

您提到的方法仅在二进制文件没有剥离符号时才有效,即使这样,它也不会报告行号!因此,不要将其用于app二进制文件,而是将其与dSYM一起使用.也许你很幸运,新的dSYM仍然有一些有用的信息.

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

崩溃本身可以将NSDictionary值设置为例如nil密钥.

  • 幸运的是,对于我来说4.3.2 Xcode版本的日志用行号表示,没有当前构建存档,同时将"复制期间的条带调试符号"设置为"NO"以进行调试配置. (2认同)

rux*_*uxy 8

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

mdimport .
Run Code Online (Sandbox Code Playgroud)

之后尝试运行symbolicatecrash脚本.在XCode中,转到您的管理器,设备日志,然后右键单击崩溃日志选择"重新符号化日志".

  • 这适用于我在市场上的应用程序.辉煌!是什么导致你找到这个? (2认同)