XCode 4.3.2中的符号化崩溃日志

时间:2012-04-12 22:00:24

标签: iphone ios xcode cocoa-touch xcode4.3

每当我的应用程序发生崩溃时,崩溃日志都会以组织者内部的符号形式显示。现在的问题是所有指向iOS类的内存地址都被标记得很好,但我的应用程序类的内存地址没有被象征化。我需要设置哪个XCode项目属性才能启用它们。

这些是当前的构建设置,可以启用iOS类的符号化。我正在使用XCode 4.3.2。

Current build settings

4 个答案:

答案 0 :(得分:1)

Strip Debug Symbols During Copy:非调试配置版本应为YES,因为它会将您的应用二进制文件炸掉30-50%

Debug Information Format:所有配置都应为DWARF with dSYM File,以便能够用任何二进制符号表示符号。

现在我猜你是在调试版本上尝试这个,这些版本不是Xcode中build命令的最新结果。您必须记住,每次运行构建命令时,都会生成一个新的可执行文件和一个新的dSYM软件包,而前一个软件包将被覆盖! (除非您使用存档功能)

符号化脚本从应用的崩溃报告中解析UUID,并通过聚光灯搜索相应的.app AND .app.dSYM捆绑包。因此,如果聚光灯未对目标路径建立索引,或者二进制文件被另一个构建运行替换,则它将无法对应用程序符号进行符号化。

答案 1 :(得分:1)

你关掉了聚光灯吗? symbolicatecrash使用聚光灯来查找二进制文件和dsym文件,因此如果您关闭了聚光灯,那么它将无法找到它们。无论如何,这里是如何将十六进制堆栈跟踪地址转换为行号:

[1]找到.dSym文件,方法是转到XCode-> Organizer,点击档案,然后右键点击档案,然后进入这个目录(你只需将文件夹拖到一个shell窗口中)。 / p>

[2] cd进入dSYMs目录。

[3]运行dwarfdump命令将十六进制地址转换为代码中的行号:

dwarfdump --arch armv7 myApp.dSYM --lookup 0xaabbccdd | grep 'Line table'

答案 2 :(得分:0)

尝试将部署后处理设置为NO。

  

DEPLOYMENT_POSTPROCESSING。激活此设置表示应删除二进制文件,文件模式,所有者和组   信息应设置为标准值。

答案 3 :(得分:0)

似乎xcode使用最后归档的build .dsym文件来表示您的日志(即使在调试中),因此尝试归档您的应用

归档您的应用后重新标记崩溃报告。

它对我有用。