每当我的应用程序崩溃时,崩溃日志都会在组织者中以符号化的形式显示。现在的问题是,所有指向iOS类的内存地址都被成功地符号化了,但是我的应用程序类的内存地址却没有被符号化。我需要设置哪个XCode项目属性才能使它们生效呢?
以下是当前已启用iOS类符号化的构建设置。我使用的是XCode 4.3.2。
以下是当前已启用iOS类符号化的构建设置。我使用的是XCode 4.3.2。
您是否关闭了Spotlight?symbolicatecrash使用Spotlight查找二进制文件和dsym文件,因此如果您关闭了Spotlight,则无法找到它们。 无论如何,以下是将十六进制堆栈跟踪地址转换为行号的方法:
[1] 通过前往XCode->组织器,在档案中单击,然后右键单击档案并转到此目录来查找.dSym文件(您可以将文件夹拖到shell窗口中)。
[2] 进入dSYMs目录。
[3] 运行dwarfdump命令以将十六进制地址转换为代码中的行号:
dwarfdump --arch armv7 myApp.dSYM --lookup 0xaabbccdd | grep 'Line table'
复制时剥离调试符号
:在非调试配置构建中应该设置为YES
,因为它会使您的应用程序二进制文件膨胀30-50%。
调试信息格式
:对于所有配置,应该设置为DWARF with dSYM File
,以便能够从任何二进制文件中解析您的符号。
现在我猜测您正在尝试在调试构建上运行此操作,在不是Xcode中最新构建命令结果的构建上运行此操作。您必须记住,每次运行构建命令时,都会生成一个新的可执行文件和新的dSYM包,并覆盖上一个!(除非您使用存档功能)
符号化脚本从应用程序的崩溃报告中解析UUID,并通过Spotlight搜索相应的.app和.app.dSYM捆绑包。因此,如果Spotlight未索引目标路径或二进制文件被另一个构建运行替换,则无法将应用程序符号符号化。
看起来xcode使用上一个已归档的构建.dsym文件来符号化您的日志(即使处于调试模式),因此尝试归档您的应用程序。
在归档应用程序之后重新符号化您的崩溃报告。
这对我有用。
尝试将部署后处理设置为NO。
DEPLOYMENT_POSTPROCESSING。 激活此设置表示应剥离二进制文件并将文件模式、所有者和组信息设置为标准值。