我想尝试和象征我的iPhone应用程序的崩溃报告。
我从iTunes Connect上找到了崩溃报告。我有提交给App Store的应用程序二进制文件,我有作为构建的一部分生成的dSYM文件。
我将所有这些文件放在一个目录中,该目录以spotlight为索引。
现在该做什么?
我试着引用:
symbolicatecrash crashreport.crash myApp.app.dSYM
它只输出与崩溃报告开始时相同的文本,没有符号。
我做错什么了吗?
我想尝试和象征我的iPhone应用程序的崩溃报告。
我从iTunes Connect上找到了崩溃报告。我有提交给App Store的应用程序二进制文件,我有作为构建的一部分生成的dSYM文件。
我将所有这些文件放在一个目录中,该目录以spotlight为索引。
现在该做什么?
我试着引用:
symbolicatecrash crashreport.crash myApp.app.dSYM
它只输出与崩溃报告开始时相同的文本,没有符号。
我做错什么了吗?
当前回答
我发现大多数提议的替代方案在最新的XCode中都不起作用(用XCode 10测试)。例如,我在Xcode -> Organizer -> Device logs -view中拖放.crash日志时没有运气。
我推荐使用Symbolicator工具https://github.com/agentsim/Symbolicator
Git克隆Symbolicator存储库,并用Xcode编译和运行 复制.crash文件(ascii文件,请求文件中有堆栈跟踪)和崩溃释放的.xarchive到同一个临时文件夹 拖放.crash文件到Dock中的Symbolicator图标 在5-30秒内,符号崩溃文件将在.crash和.xarchive所在的相同文件夹中生成
其他回答
我发现大多数提议的替代方案在最新的XCode中都不起作用(用XCode 10测试)。例如,我在Xcode -> Organizer -> Device logs -view中拖放.crash日志时没有运气。
我推荐使用Symbolicator工具https://github.com/agentsim/Symbolicator
Git克隆Symbolicator存储库,并用Xcode编译和运行 复制.crash文件(ascii文件,请求文件中有堆栈跟踪)和崩溃释放的.xarchive到同一个临时文件夹 拖放.crash文件到Dock中的Symbolicator图标 在5-30秒内,符号崩溃文件将在.crash和.xarchive所在的相同文件夹中生成
使用Xcode 4,任务更简单:
开放的组织者, 单击左列的Library | Device Log 点击屏幕底部的“导入”按钮…
瞧。日志文件将自动导入并被符号化。如果你先使用Xcode -> Product -> Archive存档构建。
分析苹果崩溃报告的步骤:
将推送到appstore的发布版.app文件、发布时创建的. dsym文件以及从APPLE收到的崩溃报告复制到一个文件夹中。 打开终端应用程序,进入上面创建的文件夹(使用cd命令) 执行命令atos -arch armv7 -o APPNAME。app /浏览器名称MEMORY_LOCATION_OF_CRASH。内存位置应该是应用程序根据报告崩溃的位置。
例如:atos -arch armv7 -o 'APPNAME。应用0 x0003b508”/“浏览器名称”
这将向您显示导致崩溃的确切方法名称。
[classname functionName:];-510年
Symbolicating音标
如果我们使用IPA作为符号-只要用。zip重命名扩展名。IPA,然后我们就可以得到一个包含app的有效载荷文件夹。在这种情况下,我们不需要. dsym文件。
Note
这只能在应用程序二进制没有符号剥离的情况下工作。默认情况下,发布版本会删除符号。我们可以在项目构建设置“复制过程中的条带调试符号”中将其更改为NO。
更多细节请看这篇文章
我有点不爽的事实,这里似乎没有什么“只是工作”,所以我做了一些调查,结果是:
设置:接收报告的QuincyKit后端。没有任何象征意义,因为我甚至不知道他们在建议我怎么做才能让它起作用。
解决办法:从服务器在线下载崩溃报告。它们被称为“crash”,默认情况下进入~/Downloads/文件夹。考虑到这一点,这个脚本将“做正确的事情”,崩溃报告将进入Xcode(组织者,设备日志),符号化将完成。
脚本:
#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode
if [ ! -e ~/Downloads/crash ]; then
echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
exit 1
fi
cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx
datestr=`date "+%Y-%m-%d-%H%M%S"`
mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"
如果你使用QuincyKit/PLCR,你可以通过做两件事来自动化Xcode Organizer中的拖放操作。
首先,您必须编辑远程脚本admin/actionapi.php ~第202行。它似乎没有得到正确的时间戳,所以文件以Xcode无法识别的名称“crash”结束(它想要一些。crash):
header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');
其次,在iOS端在QuincyKit BWCrashReportTextFormatter。m ~第176行,将@"[TODO]"改为@"TODO"以避开坏字符。
在我的例子中,我直接将崩溃报告从Mail拖到Organizer。出于某种原因,这阻止了坠机报告被符号化(我很想知道为什么)。
首先将崩溃报告复制到桌面,然后将它们从桌面拖动到管理器,这样它们就被正确地符号化了。
我知道,这是非常具体的案例。但以防万一,还是分享一下吧。