Xcode 5组织者有一个视图,列出所有崩溃日志.我们可以在这里拖放崩溃日志.但是从Xcode 6开始,我知道他们已经将设备从组织中移出,并为此设置了一个新窗口.但我没有找到一个地方,我在查看Xcode 6后,我在Xcode 5中拖放了崩溃日志.任何人都知道答案?
Sea*_*bet 241
写这个答案对于社区和我自己一样多.
如果出现了表示崩溃报告的问题,可以按如下方式克服:
创建一个单独的文件夹,复制Foo.app
并Foo.app.dSYM
从相应.xcarchive
的文件夹中.同时将.crash
报告复制到文件夹中.
在TextEdit或其他地方打开崩溃报告,转到该Binary Images:
部分,然后复制那里的第一个地址(例如0xd7000
).
cd
进入文件夹.现在您可以运行以下命令:
xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
这将象征地址处的符号0x0033f9bb
.请确保选择正确的-arch
选项值(可以从该Binary Images:
部分的第一行获得,或者从Hardware Model:
崩溃报告和应用程序支持的拱门中找到).
您还可以将崩溃报告中的必要地址(例如线程调用堆栈)直接复制到文本文件中(在TextEdit中,按住Option并选择必要的文本块,或复制和剪切),以获得如下内容:
0x000f12fb
0x002726b7
0x0026d415
0x001f933b
0x001f86d3
Run Code Online (Sandbox Code Playgroud)
现在您可以将其保存到文本文件中,例如addr.txt
,运行以下命令:
xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt
Run Code Online (Sandbox Code Playgroud)
这将立即为所有地址提供一个很好的符号.
PS
在执行上述操作之前,值得检查一切是否正确设置(因为atos
基本上可以报告任何提供的地址).
要进行检查,请打开崩溃报告,然后转到调用堆栈的末尾Thread 0
.从结尾开始列出您的应用程序的第一行(通常是第二行),例如:
34 Foo 0x0033f9bb 0xd7000 + 2525627
Run Code Online (Sandbox Code Playgroud)
应该是main()
电话.0x0033f9bb
如上所述对地址进行符号化(在这种情况下)应该确认这确实main()
不是一些随机方法或函数.
如果地址不是main()
,请检查加载地址(-l
选项)和拱门(-arch
选项).
PPS
如果上述因bitcode而无效,请从iTunes Connect下载构建版本的dSYM,从dSYM(Finder> Show Package Contents)中提取可执行二进制文件,将其复制到目录中,并使用它(即Foo
)作为参数atos
,而不是Foo.app/Foo
.
Mru*_*rug 165
您也可以参考这个,我已经编写了手动崩溃重新符号的一步一步程序.
步骤1
将所有上述文件(MyApp.app,MyApp-dSYM.dSYM和MyApp-Crash-log.crash)移动到具有方便名称的文件夹中,只要您轻松使用终端即可.
对我来说,桌面是最容易到达的地方;)因此,我已将这三个文件移动到桌面上的MyApp文件夹中.
第2步
现在轮到Finder,转到适用于您的XCODE版本的路径.
Xcode 8,Xcode 9 symbolicatecrash
Xcode 7.3
find /Applications/Xcode.app -name symbolicatecrash
XCode 7 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 6 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
降低Xcode 6
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
要么
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
从这个位置复制symbolicatecrash文件,并将其粘贴到Desktop/MyApp(等等......不要盲目跟我,我粘贴文件夹MyApp中的sybolicatecrash文件,你在第一步中在你最喜欢的位置创建的文件,有三个文件. )
第3步
打开终端,将CD发送到MyApp文件夹.
cd Desktop/MyApp?—?Press Enter
export DEVELOPER_DIR=$(xcode-select --print-path)
Run Code Online (Sandbox Code Playgroud)
- 按Enter键
./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM
Run Code Online (Sandbox Code Playgroud)
- 按Enter键
而已 !!符号化的日志在你的终端上...现在你还在等什么?现在简单地说,找出错误并解决它;)
快乐的编码!!!
Jon*_*nny 105
好的,我意识到你可以这样做:
Xcode > Window > Devices
,选择左上角连接的iPhone/iPad /等.你可能在那里有很多日志,并且为了以后更容易找到导入的日志,你可以继续删除所有日志......除非它们对你有意义.或者除非你知道崩溃发生的确切时间点 - 它应该写在文件中...无论如何......我很懒,所以我只删除所有旧日志(这实际上需要一段时间).
Mar*_*uch 22
对我来说.crash文件就足够了.没有.dSYM文件和.app文件.
我在mac上运行这两个命令,我在那里构建了存档并且它工作正常:
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
Run Code Online (Sandbox Code Playgroud)
RPM*_*RPM 20
使用Xcode有一种更简单的方法(不使用命令行工具并一次查找一个地址)
获取任何.xcarchive文件.如果你有一个之前你可以使用它.如果您没有,请通过从Xcode运行"产品">"存档"来创建一个.
右键单击.xcarchive文件并选择"显示包内容"
将dsym文件(崩溃的应用程序版本)复制到dSYMs文件夹
将.app文件(崩溃的应用程序版本)复制到Products> Applications文件夹
编辑Info.plist并编辑ApplicationProperties字典下的CFBundleShortVersionString和CFBundleVersion.这有助于您以后识别存档
双击.xcarchive将其导入Xcode.它应该打开管理器.
返回崩溃日志(在Xcode的Devices窗口中)
将.crash文件拖到那里(如果尚未存在)
现在应该对整个崩溃日志进行符号化.如果没有,则右键单击并选择"重新符号化崩溃日志"
Vic*_*dan 10
如果您在同一个子文件夹中有 .dSYM 和 .crash 文件,您可以采取以下步骤:
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
-[AtomicElementViewController myTransitionDidStop:finished:context:]
权威来源:https : //developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
请按照Xcode 10中的以下步骤来表示来自同一计算机上的应用程序构建的崩溃日志:
归档时间: |
|
查看次数: |
123355 次 |
最近记录: |