我想尝试和象征我的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
它只输出与崩溃报告开始时相同的文本,没有符号。
我做错什么了吗?
当前回答
对我有效的组合是:
将dSYM文件复制到崩溃报告所在的目录中 解压包含应用程序的ipa文件(' Unzip MyApp.ipa') 将结果爆炸有效负载中的应用程序二进制文件复制到与崩溃报告和符号文件相同的文件夹中(类似于“MyApp.app/MyApp”) 从Xcode的管理器中导入或重新符号化崩溃报告
使用atos时,我无法用崩溃报告中的地址和偏移量解析正确的符号信息。当我这样做时,我看到了一些更有意义的东西,它似乎是一个合理的堆栈跟踪。
其他回答
为了表示崩溃,Spotlight必须能够找到与您提交给Apple的二进制文件同时生成的. dsym文件。由于它包含符号信息,如果它不可用,那么您就不走运了。
只是xcode 6.1.1的一个简单更新的答案。
步骤
xcode 1. >窗口>设备。
2.从设备部分下的设备列表中选择一个设备。
3.选择“查看设备日志”。
4.在All Logs部分下,您可以直接拖放report.crash
5.Xcode会自动为你生成崩溃报告。
6.您可以通过将符号化崩溃报告的日期/时间与崩溃报告中提到的日期/时间匹配来找到符号化崩溃报告。
在运行symbolicate crash之前,我还将dsym、应用程序包和崩溃日志放在同一个目录中
然后我使用.profile中定义的这个函数来简化运行symbolicatcrash:
function desym
{
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}
上面的论点可能对你有帮助。
您可以检查,以确保spotlight“看到”您的dysm文件通过运行命令:
mdfind 'com_apple_xcode_dsym_uuids = *'
在目录中查找您拥有的dsym。
注意:在最新的Xcode中,不再有Developer目录。你可以在这里找到这个实用程序:
/应用程序/ xcode /内容/ SharedFrameworks / DTDeviceKitBase.framework /更离子/ /资源/ symbolicatecrash
分析苹果崩溃报告的步骤:
将推送到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。
更多细节请看这篇文章
这是另一个问题,我有符号化崩溃-它不会与应用程序有空间在他们的捆绑(即。“测试App.app”)。注意,我不认为你在提交时可以在他们的名字中有空格,所以你应该删除这些,但如果你已经有需要分析的崩溃,就像这样修补符号崩溃(4.3 GM):
240c240
< my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
> my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
< my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
> my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";