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