Ios 如何符号化崩溃日志Xcode?
Xcode 5 organizer有一个视图,可以列出所有崩溃日志。我们可以在这里拖放崩溃日志。但自从Xcode 6以来,我知道他们已经将设备移出了组织,并为其设置了一个新窗口。但我找不到一个地方可以查看在升级到Xcode 6后拖放到Xcode 5中的崩溃日志。有人知道答案吗?好的,我意识到你可以这样做:Ios 如何符号化崩溃日志Xcode?,ios,xcode,Ios,Xcode,Xcode 5 organizer有一个视图,可以列出所有崩溃日志。我们可以在这里拖放崩溃日志。但自从Xcode 6以来,我知道他们已经将设备移出了组织,并为其设置了一个新窗口。但我找不到一个地方可以查看在升级到Xcode 6后拖放到Xcode 5中的崩溃日志。有人知道答案吗?好的,我意识到你可以这样做: 在Xcode>Window>Devices中,选择左上角连接的iPhone/iPad/etc 查看设备日志 所有日志 您可能有很多日志,为了以后更容易找到导入的日志,您可以在此时继续删除所有日
Xcode>Window>Devices
中,选择左上角连接的iPhone/iPad/etc写这个答案是为了社区,也是为了我自己 如果出现故障报告的象征性问题,可以通过以下方式解决:
Foo.app
和Foo.app.dSYM
从相应的.xarchive
复制到文件夹中。同时将.crash
报告复制到文件夹中二进制图像:
部分,并在那里复制第一个地址(例如0xd7000
)cd
放入文件夹中。现在可以运行以下命令:
xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt
xcrun atos-o Foo.app/Foo-arch arm64-l 0xd7000 0x0033f9bb
0x0033f9bb
。请确保为-arch
选项选择正确的值(可以从二进制图像:
部分的第一行获取,或者从崩溃报告中的硬件型号:
和应用程序支持的arch中计算)
您还可以将必要的地址(例如线程调用堆栈)从崩溃报告直接复制到文本文件中(在TextEdit中,按住选项并选择必要的文本块,或复制并剪切),以获得如下内容:
0x000f12fb
0x002726b7
0x0026d415
0x001f933b
0x001f86d3
现在,您可以将其保存到文本文件中,例如addr.txt
,并运行以下命令:
xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt
这将同时为所有地址提供一个很好的符号
p.S.
在执行上述操作之前,需要检查所有设置是否正确(因为atos
将很高兴地报告基本上所有提供地址的内容)
要进行检查,请打开崩溃报告,然后转到线程0
的调用堆栈末尾。从末尾开始列出应用程序的第一行(通常是第二行),例如:
应该是main()
调用。如上所述对地址进行符号化(0x0033f9bb
,在这种情况下)应确认这确实是main()
,而不是某种随机方法或函数
如果地址不是main()
,请检查加载地址(-l
选项)和arch(-arch
选项)
p.p.S.
如果由于位代码而无法执行上述操作,请从iTunes Connect下载您构建的dSYM,从dSYM(查找器>显示软件包内容)中提取可执行二进制文件,将其复制到目录中,并将其(即
Foo
)用作atos
的参数,不要使用Foo.app/Foo
,而是确保您的Xcode应用程序名称不包含任何空格。这就是它对我不起作用的原因。所以/Applications/Xcode.app
起作用,而/Applications/Xcode 6.1.1.app
不起作用。你也可以参考这一个,我已经编写了手动崩溃重新符号化的逐步过程。
步骤1
将上述所有文件(MyApp.app、MyApp-dSYM.dSYM和MyApp-Crash log.Crash)移动到一个具有方便名称的文件夹中,方便您使用终端
对我来说,桌面是最容易到达的地方;)
所以,我将这三个文件移动到桌面上的MyApp文件夹中
步骤2
现在轮到查找程序了,请转到以下适用于您的XCODE版本的路径
使用此命令查找脚本文件
find/Applications/Xcode.app-name-crash
Xcode 8、Xcode 9、Xcode 11/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
代码7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7/Applications/XCode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
低于Xcode 6
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
或
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
步骤3
将找到的symbolicatecrash脚本文件的目录添加到$PATH
env变量,如下所示:sudo vim/etc/PATH.d/Xcode symbolicatecrash
,然后粘贴脚本文件的目录并保存文件。打开新终端时,您可以在任何文件夹中调用/usr/bin
中的命令
或
从该位置复制崩溃文件,并将其粘贴到桌面/MyApp
(等等……不要
cd Desktop/MyApp — Press Enter
export DEVELOPER_DIR=$(xcode-select --print-path)
./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /yourPath/crash1.crash > /yourPath/crash1_symbolicated.crash