8

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

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

当前构建设置

4

4 回答 4

1

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 未索引目标路径或二进制文件被另一个构建运行替换,它将无法符号化应用程序符号。

于 2012-04-14T12:49:22.373 回答
1

你关了聚光灯吗?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'
于 2013-10-12T01:22:10.603 回答
0

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

部署_后处理。激活此设置表示应剥离二进制文件并将文件模式、所有者和组信息设置为标准值。

于 2012-04-13T00:58:58.123 回答
0

似乎 xcode 使用最后存档的构建 .dsym 文件来表示您的日志(即使在调试中),因此请尝试存档您的应用程序

归档您的应用程序后重新符号化您的崩溃报告。

它对我有用。

于 2013-02-07T10:01:13.050 回答