我NSSetUncaughtExceptionHandler用来将堆栈跟踪打印到iPhone中的本地文件,这将在下次启动应用程序时发送到我们的服务器.然后我可以检查异常数据并修复bug.在一些崩溃中,我有模块名称和抛出异常的函数,这些很容易.但大多数情况下我有这样的事情:
"4 libc++abi.dylib 0x35bba3c5 _ZL19safe_handler_callerPFvvE + 76",
"5 libc++abi.dylib 0x35bba451 _ZdlPv + 0",
"6 libc++abi.dylib 0x35bbb825 __cxa_current_exception_type + 0",
"7 libobjc.A.dylib 0x37bab2a9 objc_exception_rethrow + 12",
"8 CoreFoundation 0x3575a50d CFRunLoopRunSpecific + 404"
Run Code Online (Sandbox Code Playgroud)
例如:
*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array
但是我的应用程序中有几十个数组,所以我需要帮助才能找到引发异常的特定行,使用从堆栈跟踪中获取的数据.
有没有人知道来自Apple或其他的好文章/教程,在那里我可以学习解码堆栈跟踪中的数字以找到源代码中有问题的行.提前致谢!
我有一个应用程序,我刚刚将它提交给应用程序疼痛(该应用程序是为我开发的,因为我不知道iOS开发,但我知道其他编码语言).苹果公司拒绝了应用程序说崩溃了(奇怪的是在我做的所有测试中都没有崩溃,可能大约50个!)我得到了他们的崩溃日志,在Xcode中符号化并得到了这个结果.唯一的问题是我也不明白这一点.我想知道是否有人可以解释这意味着什么,我的代码在哪里,这个错误是什么以及如何解决它.
Incident Identifier: 0E0825D2-FBE9-4BF1-8C7F-B83709C2991A
CrashReporter Key: 5b0d1e3117951cb6f669414656a30ad10c807e15
Hardware Model: iPhone4,1
Process: Chapter3 Framework [6333]
Path: /var/mobile/Applications/4A4C7A70-1B6C-403E-8A98-6563BDF3AF83/Chapter3 Framework.app/Chapter3 Framework
Identifier: Chapter3 Framework
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2012-01-07 17:46:13.980 +1100
OS Version: iPhone OS 5.0.1 (9A405)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xb0000008
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x31be9fbc objc_msgSend + 16
1 Chapter3 Framework 0x00004d78 0x1000 + 15736
2 …Run Code Online (Sandbox Code Playgroud) 我有一个符号化的应用程序崩溃报告.
回溯的某些行是这样的.行号正确显示,这非常有用:
TopicMapScene::create(int) (TopicMapScene.cpp:588)
Run Code Online (Sandbox Code Playgroud)
但有些线条是这样的.不显示行号,只显示内存偏移量,这是无用的.
cocos2d::CCSequence::update(float) + 206
Run Code Online (Sandbox Code Playgroud)
我的问题:如何有时显示行号,有时不显示?是否有解决方案来显示行号而不是内存偏移量?(或者这根本不可能,我应该用更小的函数来解决这个问题?)