尝试调试应用程序。问题是我找不到这个程序。
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
谢谢。
尝试调试应用程序。问题是我找不到这个程序。
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 路径。打开终端并运行:
/usr/bin/xcode-select -打印路径
如果它显示“/Developer”或除“/Applications/Xcode.app/Contents/Developer/”以外的任何内容,那么它是错误的。要解决此问题,请运行以下命令:
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
您现在可以运行以下所有步骤,但symbolicatecrash
命令位于新位置(再次)除外。这是因为 Xcode 现在作为应用程序安装。 要从symbolicatecrash
终端运行它:
查找 /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/
使用以下命令从终端搜索:
查找 /Developer -name symbolicatecrash -type f
对我来说,这返回了:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
运行symbolicatecrash
命令,将崩溃日志作为第一个参数,将 dSYM 文件作为第二个参数。请注意,如果您将从必须放在前面symbolicatecrash
的当前目录运行,除非您的 PATH 环境变量包含命令所在的目录。./
./symbolicatecrash
我首先更改了包含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 文件。
以下是步骤:
A plugin is available for Xcode under the Product menu. This plugin is available through Alcatraz package manager or can be directly downloaded from github.
This plugin internally incorporates a shell script that does the set up of running the following commands for manual crash symbolication.
alias symbolicatecrash='/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash'
find /Applications/Xcode.app -name symbolicatecrash -type f
export DEVELOPER_DIR='/Applications/Xcode.app/Contents/Developer'
symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash /path/to/MyApp.app.dSYM.
表示崩溃日志的一种方法是在终端上运行以下命令:
xcrun atos -o MyApp.app/MyApp -arch armv7 -l 0xb7000 -f MyApp.crash
将上述命令中的示例十六进制数 (0xb700) 替换为基本加载地址。基本加载地址是紧随其后的行中的第一个内存地址
“二进制图像:”
要获取 .app 文件:
右键单击 xcarchive 文件并选择 Show Package Contents .app 文件位于 Products/Applications 目录中。
我刚刚在 5 分钟前在这里写了一篇关于调试崩溃日志的帖子:http: //just2us.com/2010/10/reading-iphone-crashlog/
如果将日志拖放到 Xcode 足以满足您的目的,您可能不再需要 symbolicatecrash.sh。我使用的是 3.2.4,也找不到脚本。
正如 Apple 解释的那样,Xcode 将尝试自动进行符号化。它使用symbolicatecrash
和聚光灯来做到这一点。但是,如果应用程序不是在本地构建或被删除,则必要的 .app 和 .dsym 文件不可用。
因此,请保留 dsym 文件和已发布版本的应用程序。构建工具通常会将 .dsym 文件压缩为 .dsym.zip 并将 .app 打包为 .ipa。您可以同时解压缩并将 .app 和 .dsym 复制到同一个文件夹。然后 Xcode 将能够使用 Spotlight 找到它们。
这是我使用的一个简单方法: