如何手动Symbolicate iOS崩溃查看崩溃日志
试图debugging应用程序。 麻烦的是我找不到这个程序。
symbolicatecrash.sh
sudo cp /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash /usr/local/bin/
它是一个单独的下载? 我正在使用XCode 3.2.3
谢谢。
编辑:: XCode 4.3
除了less数例外情况,您将需要按照原始答案(下文)中所述的相同步骤进行操作。
首先,您需要修复Xcodepath。 打开一个terminal并运行:
/ usr / bin / xcode-select -print-path
如果显示“/ Developer”或者“/Applications/Xcode.app/Contents/Developer/”,那么它是错误的。 要解决这个问题,运行命令:
sudo / usr / bin / xcode-select -switch /Applications/Xcode.app/Contents/Developer/
您现在可以运行下面的所有步骤,但symbolicatecrash
命令在新点(再次)中是例外。 这是因为Xcode现在安装为应用程序。 要findsymbolicatecrash
从terminal运行这个 :
find/Applications/Xcode.app -name symbolicatecrash -type f
这应该返回:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
在运行symbolicatecrash
之前,你可能希望进入这个目录:
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/
原来的答案:: Xcode <4.3
symbolicatecrash的path
从terminalsearch使用:
find / Developer -name symbolicatecrash -type f
对我来说,这返回:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
如何手动符号化崩溃日志
运行symbolicatecrash
命令,将崩溃日志作为第一个参数,将dSYM文件作为第二个参数。 请注意,如果您将从当前目录运行symbolicatecrash
,您必须将./
放在前面,例如./symbolicatecrash
除非PATH环境variables包含该命令所在的目录。
我把它改成了第一个具有symbolicatecrash
命令的目录(注意:对于Xcode 4.3来说,会有所不同,见上图):
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/
然后我执行了下面的命令:
./symbolicatecrash /somePath/MyCrashLogFile.crash /somePath/MyAppName.app.dSYM
如何查找dSYM文件:
您必须拥有用于创build崩溃版本的存档以获取dSYM文件。
这里是步骤:
- 右键单击(或按Ctrl点击)组织者的档案,然后select“在Finder中显示”。
- 从查找器中的xcarchive文件中,右键单击(或按住Ctrl单击)此文件,然后select“显示包装内容”。 您将看到一个“dSYMs”文件夹。
- 在“dSYMs”文件夹中,您将find“YourAppName.app.dSYM”文件,您将需要文件符号。
一种表示崩溃日志的方法是在terminal上运行以下命令:
xcrun atos -o MyApp.app/MyApp -arch armv7 -l 0xb7000 -f MyApp.crash
将上述命令中的示例hex数(0xb700)replace为基本加载地址。 基本加载地址是紧接着的行中的第一个存储器地址
“二元图片:”
获取.app文件:
右键单击xcarchive文件并selectShow Package Contents .app文件位于Products / Applications目录中。
产品菜单下的Xcode可以使用插件。 这个插件可以通过恶意软件包pipe理器或直接从github下载。
这个插件在内部集成了一个shell脚本,可以执行以下命令来设置手动崩溃符号。
- 将一个别名设置为symbolicatecrash.pl perl脚本
alias symbolicatecrash ='/ Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / Library / PrivateFrameworks / DTDeviceKit.framework / Versions / A / Resources / symboliciccrash'
- 要findsymbolicatecrash,它应该与上面的别名不同:
find/Applications/Xcode.app -name symbolicatecrash -type f
- 设置DEVELOPER_DIRvariables:
export DEVELOPER_DIR ='/ Applications / Xcode.app / Contents / Developer'
- 随着dSYM的崩溃可以象征性的:
symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash /path/to/MyApp.app.dSYM。
我只是在5分钟前在debugging崩溃日志写了一篇文章: http : //just2us.com/2010/10/reading-iphone-crashlog/
如果将日志拖放到Xcode中,您可能不再需要symbolicatecrash.sh。 我正在使用3.2.4,我也找不到脚本。
正如苹果解释, Xcode将尝试自动符号。 它使用symbolicatecrash
和聚光灯来做到这一点。 但是,如果应用程序不是在本地构build的,或者已被删除,则必需的.app和.dsym文件不可用。
所以请围绕dsym文件和发布版本的应用程序。 构build工具通常会将.dsym文件压缩为.dsym.zip,并将.app作为.ipa打包。 您可以解压缩并将.app和.dsym复制到同一个文件夹中。 然后Xcode将能够使用聚光灯find他们。
这是一个简单的方法,我使用:
- 打开Xcode 6
- 插入你的开发设备
- 在Xcode中,转到窗口>设备>select您的设备
- 按“查看设备日志”
- 将您的报告拖到窗口中查看