symbolicatecrash不与dSYM合作,但'atos'有效 [英] symbolicatecrash not working with dSYM, but 'atos' works

查看:107
本文介绍了symbolicatecrash不与dSYM合作,但'atos'有效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对不起!有一个问题让我很困惑!

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

我的问题是:


  1. 如果dSYM包含调试符号,为什么需要可执行二进制文件?

  1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆