我想尝试和象征我的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 Organizer并没有那么神奇地象征我的应用程序。我从苹果那里得到的应用程序提交失败的崩溃报告中没有任何符号。
我尝试使用命令行,将崩溃报告与.app文件(我提交给商店的文件)和.dSYM文件放在同一个文件夹中:
$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"
这只为我的应用程序提供了符号,而不是核心基础代码,但它比Organizer提供给我的数字转储要好,足以让我找到并修复应用程序的崩溃。如果有人知道如何扩展这一点,以获得基金会的符号,这将是赞赏的。
其他回答
我更喜欢一个脚本,将象征我的所有崩溃日志。
先决条件
创建一个文件夹,放4样东西:
symbolicatecrash perl script - there are many SO answers that tells it's location The archive of the build that match the crashes (from Xcode Organizer. simple as Show in Finder and copy) [I don't sure this is necessery] All the xccrashpoint packages - (from Xcode Organizer. Show in Finder, you may copy all the packages in the directory, or the single xccrashpoint you would like to symbolicate) Add that short script to the directory: #!/bin/sh echo "cleaning old crashes from directory" rm -P *.crash rm -P *.xccrashpoint rm -r allCrashes echo "removed!" echo "" echo "--- START ---" echo "" mkdir allCrashes mkdir symboledCrashes find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \; cd allCrashes for crash in *.crash; do ../symbolicatecrash $crash > ../symboledCrashes/V$crash done cd .. echo "" echo "--- DONE ---" echo ""
这个脚本
运行脚本时,将得到两个目录。
allCrashes -所有来自所有xccrashpoint的所有崩溃都会在那里。 symboledCrashes -相同的崩溃,但现在有了所有的符号。 你不需要在运行脚本之前从旧的崩溃中清理目录。它会自动清洗。好运!
我使用以下步骤成功地做到了这一点。
第一步:在桌面上创建一个文件夹,我给它命名为“CrashReport”,并放三个文件(“MYApp. exe”)。应用程序”、“MyApp.app。“MYApp_2013-07-18.crash”)。
第二步:打开查找器,进入应用程序,在那里你会找到Xcode应用程序,右键单击这个,然后单击“显示包内容”,在这之后按照这个简单的路径。 “内容- >开发人员- >平台- > iPhoneOS.platform - >开发- >库- > PrivateFrameworks - > DTDeviceKit.framework - >版本- > - >资源”
OR
“内容- >开发人员- >平台- > iPhoneOS.platform - >开发- >库- > PrivateFrameworks - > DTDeviceKitBase.framework - >版本- > - >资源”
OR
对于Xcode 6及以上版本,路径为 应用程序/ xcode /内容/ SharedFrameworks / DTDeviceKitBase.framework /版本/ /资源
在你找到“symbolicatcrash”文件的地方,复制并粘贴到“CrashReport”文件夹。
第三步:启动终端,运行这3条命令
cd /Users/mac38/Desktop/CrashReport,按“Enter”键 出口DEVELOPER_DIR = " /应用程序/ Xcode。app/Contents/Developer”,按“Enter” ./ symbolicatcrash -A -v MYApp_2013-07-18.使用实例崩溃MyApp.app.dSYM,然后按Enter现在它完成了。(注意:6.4或更高版本没有-A选项——把它去掉)。
为了表示崩溃,Spotlight必须能够找到与您提交给Apple的二进制文件同时生成的. dsym文件。由于它包含符号信息,如果它不可用,那么您就不走运了。
我有点不爽的事实,这里似乎没有什么“只是工作”,所以我做了一些调查,结果是:
设置:接收报告的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"以避开坏字符。
在最新版本的Xcode(3.2.2)中,你可以拖拽任何崩溃报告到Xcode管理器的设备日志部分,它们会自动为你标记。我认为如果你使用Build & Archive(也是Xcode 3.2.2的一部分)构建那个版本的应用程序,这是最好的工作方式