symbolicatecrash不与dSYM合作,但'atos'有效 [英] symbolicatecrash not working with dSYM, but 'atos' works
问题描述
对不起!有一个问题让我很困惑!
Excuse me! There's a problem confuse me!
我有Myapp.app.dSYM。 (所有符号都已从MyApp.app中删除并复制到dSYM)
I have the Myapp.app.dSYM. (All Symbols has stripped from the MyApp.app and copy to dSYM)
现在我使用symbolicatecrash工具来表示崩溃,它不起作用!十六进制地址仍然存在。
Now I use symbolicatecrash tool to symbolicate Crashes, it's not working! Hex address is still there.
我的崩溃日志的一部分:
Part of my crash log:
......
11 MyApp 0x00000001010ac2c8 0x100070000 + 17023688
12 MyApp 0x00000001010b1168 0x100070000 + 17043816
13 MyApp 0x00000001010b10e0 0x100070000 + 17043680
......
所以我尝试使用:
atos -arch arm64 -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp -l 0x100070000 0x00000001010b1168
它的工作!符号化!
相关的符号日志可能会有所帮助:
Related symbolicate log may help:
.................fetching symbol file for MyApp--[undef]
Searching []...-- NO MATCH
Searching in Spotlight for dsym with UUID of 3e8efaf1440131ea99e585fb394a50ea
Running mdfind "com_apple_xcode_dsym_uuids == 3E8EFAF1-4401-31EA-99E5-85FB394A50EA"
Running mdls -name com_apple_xcode_dsym_paths \/Users\/jenkinsslave\/Documents\/CrashSpider\/dSYM\/com\.xxxxxx\.iphoneclient\/50037\/dsym\/MyApp\.app\.dSYM
@dsym_paths = ( /Users/jenkinsslave/Documents/CrashSpider/dSYM/com.xxxxxx.iphoneclient/50037/dsym/MyApp.app.dSYM/Contents/Resources/DWARF/MyApp )
@exec_names = ( MyApp )
Running mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'MyApp.app' || kMDItemDisplayName == 'MyApp' || kMDItemDisplayName == 'MyApp.app')"
Running mdfind "kMDItemContentType == public.unix-executable && kMDItemDisplayName == 'MyApp'"
Did not find executable for dsym
## Warning: Can't find any unstripped binary that matches version of /private/var/mobile/Containers/Bundle/Application/EA730613-BB85-401F-AAF1-D1436CE22EA6/MyApp.app/MyApp
我的问题是:
-
如果dSYM包含调试符号,为什么需要可执行二进制文件?
If dSYM has contain Debug Symbols, why it need executable binary?
为什么我可以手绘符号而不是Xcode的符号表示?
Why I can symbolicate manully but Xcode's symbolicatecrash not?
Ths!
推荐答案
symbolicatecrash 是一个内部调用 atos 的perl脚本。
symbolicatecrash is a perl script that internally calls atos.
你可以从
中获取代码 https://github.com/bitstadium/QuincyKit/blob/develop/server/local/symbolicatecrash.pl
(或您的XCode安装目录)。
You can grab the code from https://github.com/bitstadium/QuincyKit/blob/develop/server/local/symbolicatecrash.pl (or your XCode installation directory).
复制一些在哪里并编辑它以更改该行:
Copy it somewhere and edit it to change the line:
print STDERR "Did not find executable for dsym\n" if $opt{v};
return undef;
将undef更改为/path/to/your.app.dSYM/Contents/Resources/DWARF/YourAppName
Change undef to /path/to/your.app.dSYM/Contents/Resources/DWARF/YourAppName
然后再次运行它会得到正确的输出。
有了更多的工作,您可以编辑脚本自动执行此操作或使用其他参数而不是使用mdfind ......
Then run it again and it will get you the right output. With some more work your can edit the script to do this automatically or take an additional argument instead of using mdfind...
这篇关于symbolicatecrash不与dSYM合作,但'atos'有效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!