我在iPhone OS 7.0.4上生成了崩溃日志。我有适当的.app和.dSYM文件。当我使用Xcode 5表示崩溃日志时,它显示了类似这样的内容:
Thread 0 Crashed:
0 MyProject 0x001df98a ___lldb_unnamed_function6108$$MyProject + 42
1 MyProject 0x001e0c49 ___lldb_unnamed_function6119$$MyProject + 9
2 MyProject 0x002928d5 ___lldb_unnamed_function8439$$MyProject + 13
3 MyProject 0x0027fa1f ___lldb_unnamed_function8072$$MyProject + 287
4 MyProject 0x0028e657 ___lldb_unnamed_function8368$$MyProject + 27
5 MyProject 0x002888d1 ___lldb_unnamed_function8257$$MyProject + 201
当我用Xcode 4表示崩溃日志时,它产生了正确的结果 - 它向我展示了发生崩溃的应用程序中的类和方法。堆栈跟踪中没有涉及匿名块。
为什么Xcode 4和Xcode 5会产生不同的符号化崩溃日志?当我以详细模式运行symbolicatecrash脚本时,它会显示两个Xcode的相同结果:它们匹配正确的.app和.dSYM文件,并且都完成这些行:
done.
1 binary images were found.
Running /Applications/Xcode.app/Contents/Developer/usr/bin/atos -arch armv7 -l 0xd1000 -o '<PATH>/MyProject.app/MyProject' 0x002928d5 0x002888d1 0x001e0c49 0x0027fa1f 0x000d8f27 0x001df98a 0x0028e657 |
got symbolicator for <PATH>/MyProject.app/MyProject, base address 4000
答案 0 :(得分:2)
我一直有使用xcode 5进行符号化的问题
所以我使用atos手动象征我的符号。
atos -arch armv7 -o myApp.app/myApp 0x178e9e
--
Warning: /usr/bin/atos is moving and will be removed from a future OS X release.
It is now available in the Xcode developer tools to be invoked via: `xcrun atos`
To silence this warning, pass the '-d' command-line flag to this tool.
--
AFJSONEncode (in myApp) + 434
警告看起来很有趣,所以我决定尝试xcrun atos
xcrun atos -arch armv7 -o myApp.app/myApp 0x178e9e
___lldb_unnamed_function6926$$myApp (in myApp) + 434
这给了我一个未命名的功能。
所以我的猜测是Xcode 5正在使用xcrun atos,它有一个bug。
使用atos确实帮助我诊断问题并修补了修复程序。我没有安装Xcode 4。也许你可以验证Xcode 4是否产生与atos相同的结果?我按照此question
中的说明操作我很想写一个脚本来表示崩溃日志:/
答案 1 :(得分:2)
我有同样的问题并通过从iOS crash reports: atos not working as expected帖子计算___lldb_unnamed_function的地址来解决它。
在那之后:
xcrun atos -arch armv7(s)-o Xyz.app.dSYM / Contents / Resources / DWARF / xyz Calculated_Address
答案 2 :(得分:0)
您必须使用xcode 4.6创建构建,现在可能已升级到xcode 5。您需要将xcode开发人员目录设置为xcode 4.6开发人员目录才能使其正常工作。
答案 3 :(得分:0)
正如我在Cannot replicate Apple iOS app review crash的评论中发现的,Xcode 5.1的测试版解决了这个问题。我现在正在从崩溃报告中获取正确的符号。
答案 4 :(得分:0)
当我在iOS 5
设备(例如original iPad
)上调试应用程序时忘记退出Spark Inspector时,我遇到了这类问题。
答案 5 :(得分:0)
在崩溃日志中有相同的___lldb_unnamed_function符号。
您可以从发生崩溃的KSCrash(第三方iOS崩溃报告器)中获取实际的类和方法。
也支持未被捕获的C ++异常!