符号化本地构建的 iOS 应用程序的崩溃日志

Symbolicate crashlog of locally built iOS App

我已经阅读了 Whosebug 和 apple 网站上的大量主题,但我仍然无法掌握工作的基础知识。我制作了我的应用程序的调试版本,我将它安装在我的 phone 上,这个版本故意崩溃。我 运行 这个应用程序没有连接 Xcode 调试器。应用程序崩溃,我现在如何查看崩溃回溯的函数名称和行号?

我试图在 Xcode 中打开设备 windows 并在那里查看了日志,我看到了我的应用程序崩溃日志,我看到我的代码在崩溃之前有多个函数调用,但所有其中显示为十六进制地址,实际上并未符号化。我需要做什么才能让它发挥作用?

打开项目设置。转到您的 Target 并将 Debug Information Format 设置为 DWARF with dSYM File for Debug。对 项目

执行相同的操作


项目:


目标

Xcode 将符号化崩溃报告,这可能需要几秒钟,前提是您仍然拥有触发崩溃的构建的匹配符号。如果符号存在,稍等一下,崩溃报告就会更新。

如果您在此期间更改了一些代码并触发了新的构建,那么构建和符号文件将被覆盖并获得一个新的 UUID(根据 CPU 架构)。该 UUID 是崩溃报告(Binary Images 部分)的一部分,用于在 Mac 上查找匹配的符号文件。如果找不到,则符号化无法工作。

可能是您在项目名称中使用了无效字符?

我在看到十六进制而不是实际函数名称时遇到了同样的问题。原来问题出在我的应用程序名称“➕”中的 unicode 字符。我删除了它,然后 xcode 中的后续崩溃日志将正确显示函数调用。

对此的任何解决方案。我有这个问题。我在 iPad 上构建 运行 它,停止执行,然后在 iPad 上手动启动应用程序。它崩溃了,我去设备日志,崩溃在那里,但它不会符号化:

0   CoreFoundation                  0x1b0d035ac __exceptionPreprocess + 220
1   libobjc.A.dylib                 0x1c4d7d42c objc_exception_throw + 59
2   CoreFoundation                  0x1b0c0c1b4 +[NSException raise:format:arguments:] + 99
3   Foundation                      0x1b1f6a7bc -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 131
4   xxxxxxxxxxxxxxx                 0x102f6c2d4 0x102f64000 + 33492
5   xxxxxxxxxxxxxxx                 0x102f6c23c 0x102f64000 + 33340
6   xxxxxxxxxxxxxxx                 0x102f76754 0x102f64000 + 75604
7   xxxxxxxxxxxxxxx                 0x102f764ac 0x102f64000 + 74924
8   xxxxxxxxxxxxxxx                 0x102f76f40 0x102f64000 + 77632
9   xxxxxxxxxxxxxxx                 0x102f83fa0 0x102f64000 + 130976

我的应用名称中没有 Unicode 字符(实际上不是 xxxxxxx)。