我使用我的iPhone应用程序从客户那里得到了一个崩溃日志,并尝试从中获取符号信息,并且失败了......我在网上发现的是指令(在Mac上执行):
symbolicatecrash crash-log-file.crash symbol-file.dSYM>报告与 - symbols.crash
不幸的是,我的尝试都失败了: - 使用我所拥有的symbolicatecrash版本(不记得我在何处发现它),输出与输入文件相同,没有符号 - 我在磁盘上找到的另一个版本,我收到此错误消息(注意:我试图在.dSYM树中指向符号文件本身 - 仍然没有帮助):
/Developer/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。
帮助任何人?
我甚至不介意自己为符号做数学但不知道如何打开符号文件......
帕特里克
答案 0 :(得分:6)
symbolicatecrash
非常错误并且尝试使用聚光灯(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')
显然,它找到了您的一个开发构建产品(用于模拟器)并使用它来尝试表示在设备上生成的崩溃报告。当然,它失败了。
我们公司的两个不同的人发生了同样的问题。我没有调查过问题是怎么回事。我想这是非常罕见的,否则,这样一个巨大的错误就已经被修复了。目前,我只有这个非常粗略的解决方法:
build
文件夹(在您的情况下为ScanBizCards.app
)~/Library/Application Support/iPhone Simulator/4.3
,~/Library/Application Support/iPhone Simulator/3.2
,...)这样您只能使用已存档的应用程序。这一次,symbolicatecrash
找不到错误的版本并最终找到正确的版本。
如果我重现这个问题,我会花一些时间调试这个可怕的perl脚本。
我希望有所帮助。
答案 1 :(得分:1)
我有同样的问题,弗雷德里克指出。要更全面地解决问题,请在sub getSymbolPathFor_dsymUuid
脚本中搜索symbolicatecrash
,然后更改以下行:
my $cmd = "mdfind \"com_apple_xcode_dsym_uuids == $myuuid\"";
在mdfind
之后添加此参数:
-onlyin /path/to/your/app/bundles
并使用存储归档捆绑包的目录。这样,它总能找到您应用的正确版本。如果您想要更安全,请向下滚动一下它所在的位置:
my @spotLightSearchForExecutable = `mdfind $executable.app'; # To cover the case where the DSYM's and .app are no located in the same location.
并添加-onlyin /path/to/your/app/bundles
。仅当上述行的注释symbolicatecrash
无法在.DSYM所在的文件夹中找到您的.app时,才会使用此路径。希望如果你把它们存放在同一个文件夹中,那么永远不应该运行,但如果你有任何疑问,最好是安全并且也这样做。
答案 2 :(得分:0)
您似乎正在为iPhone模拟器调试符号运行symbolicatecrash,而您需要将路径传递给iPhone设备构建的符号
答案 3 :(得分:0)
如果您使用Xcode的“构建和存档”功能来分发应用程序(Apple Store或用户),您可以将崩溃日志拖到管理器中,让IDE进行符号化。
请记住,必须拥有应用和.DSYM的确切版本。重新编译应用程序会生成不同的.DSYM,但无法正常工作。