Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分析iPhone崩溃日志_Iphone - Fatal编程技术网

分析iPhone崩溃日志

分析iPhone崩溃日志,iphone,Iphone,我从一位使用iPhone应用程序的客户那里得到了一份崩溃日志,试图从中获取象征性信息,但失败得惊人。。。我在网上找到的指令是在Mac上执行的: symbolicatecrash-log-file.crash symbol-file.dSYM>report-with-symbols.crash crash-log-file.crash是用户通过iTunes(文本文件)获取的崩溃日志 symbol-file.dSYM由XCode在每次构建应用程序时创建,并在一系列文件夹中包含symbol文件 不幸的

我从一位使用iPhone应用程序的客户那里得到了一份崩溃日志,试图从中获取象征性信息,但失败得惊人。。。我在网上找到的指令是在Mac上执行的:

symbolicatecrash-log-file.crash symbol-file.dSYM>report-with-symbols.crash

crash-log-file.crash是用户通过iTunes(文本文件)获取的崩溃日志 symbol-file.dSYM由XCode在每次构建应用程序时创建,并在一系列文件夹中包含symbol文件 不幸的是,我的尝试都失败了: -对于symbolicatecrash的一个版本,我不记得在何处&当我找到它时,输出与输入文件相同,没有符号 -在磁盘上找到的另一个版本中,我收到以下错误消息注意:我试图指向.dSYM树中的符号文件本身-仍然没有帮助:

/开发者/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash failedstart.crash ScanBizCards.app.dSYM/Contents/Resources/DWARF/ScanBizCards>crashwithsymbols

无法理解otool->'\/Developer\/Platforms\/iPhoneOS.platform\/Developer\/usr\/bin\/otool-arch armv7-l/Users/patrickq/Projects/icr/OCR/newOCR/build/Debug iphonesimulator/ScanBizCards.app/ScanBizCards'的输出/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash line 301

有人帮忙吗

我甚至不介意自己计算符号,但不知道如何打开符号文件


Patrick

您似乎正在运行symbolicatecrash for iPhone simulator debug symbols,而如果您使用Xcode的构建和归档功能将应用程序分发给Apple Store或用户,则需要将iPhone设备构建的符号路径传递给Symbolics,您可以将崩溃日志拖到管理器中,让IDE进行符号化

请记住,您必须拥有应用程序和.DSYM的确切版本。重新编译应用程序会生成一个不同的.DSYM,它将无法工作。

崩溃是一个非常错误的问题,请尝试使用spotlight mdfind智能定位二进制文件/DSYM文件。这条线就是线索:

Can't understand the output from otool 
( -> '\/Developer\/Platforms\/iPhoneOS.platform\/Developer\/usr\/bin\/otool 
-arch armv7 -l 
/.../build/Debug-iphonesimulator/ScanBizCards.app/ScanBizCards') 
显然,它找到了您为模拟器开发的一个构建产品,并试图用它来象征设备上生成的崩溃报告。当然,它失败得很惨

同样的问题发生在我们公司的两个不同的人身上。我还没有调查问题是如何发生的。我想这是相当罕见的,否则,这样一个巨大的错误已经被修复了。目前,我只有一个非常粗糙的解决方法:

删除案例ScanBizCards.app中提及此可执行文件名称的所有生成文件夹 从模拟器中删除应用程序我的意思是,应用程序在模拟器的各种版本中的所有体现,如~/Library/application-Support/iPhone-simulator/4.3、~/Library/application-Support/iPhone-simulator/3.2。。。 这就只剩下归档的应用程序了。这一次,我们无法找到错误的版本并最终找到正确的版本

如果我重现这个问题,我将花一些时间调试这个可怕的perl脚本


我希望这能有所帮助。

我有弗雷德里克指出的同样问题。要更彻底地解决此问题,请在symbolicatecrash脚本中搜索子getSymbolPathFor_dsymUuid,并更改以下行:

my $cmd = "mdfind \"com_apple_xcode_dsym_uuids == $myuuid\"";
在mdfind之后添加此参数:

并使用存储归档包的目录。这样,它将始终找到应用程序的正确版本。如果您想更加安全,请向下滚动一点,显示:

my @spotLightSearchForExecutable = `mdfind $executable.app'; # To cover the case where the DSYM's and .app are no located in the same location.

并将-onlyin/path/添加到/your/app/bundle。正如上面一行的注释所述,只有当在与.DSYM相同的文件夹中找不到你的.app时,才使用此路径。希望如果您将它们都存储在同一文件夹中,则永远不会运行此操作,但如果您有任何疑问,最好也安全地执行此操作。

我已将崩溃日志拖到组织者处。。。。我看到一条信息,上面写着“象征XY”。。。。但是我看不到结果。。。你能告诉我在哪里找到它吗?我觉得瞎了…谢谢!删除模拟器构建目录并重置模拟器对我来说非常有效。仅供参考,我添加了一个答案,它实现了您建议的故障修复。
my @spotLightSearchForExecutable = `mdfind $executable.app'; # To cover the case where the DSYM's and .app are no located in the same location.