我试图调试应用程序,但问题是我找不到这个程序。
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 -print-path
如果显示为“/Developer”或任何不是“/Applications/Xcode.app/Contents/Developer/”的内容,则是错误的。要修复此问题,请运行以下命令:
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
现在您可以运行下面的所有步骤,但除了symbolicatecrash
命令位于新位置(再次)。这是因为Xcode现在安装为应用程序。要从终端找到symbolicatecrash
,请运行以下命令:
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/
从终端使用以下命令搜索:
find /Developer -name symbolicatecrash -type f
对我来说,这返回了:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
运行symbolicatecrash
命令,将崩溃日志作为第一个参数,将dSYM文件作为第二个参数。请注意,如果您将从当前目录运行symbolicatecrash
,则必须在前面加上./
,例如./symbolicatecrash
,除非您的PATH环境变量包括该命令所在的目录。
我首先更改到具有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文件,必须有用于创建崩溃构建的存档。
以下是步骤:
2. 查找symbolicatecrash,以防别名与其不同:alias symbolicatecrash='/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash'
3. 设置DEVELOPER_DIR变量:find /Applications/Xcode.app -name symbolicatecrash -type f
4. 带有dSYM的crash可以被符号化为:export DEVELOPER_DIR='/Applications/Xcode.app/Contents/Developer'
symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash /path/to/MyApp.app.dSYM.
对于符号化(crash symbolication)日志的一种方法是在终端上运行以下命令:
xcrun atos -o MyApp.app/MyApp -arch armv7 -l 0xb7000 -f MyApp.crash
将上面命令中的示例十六进制数字(0xb700)替换为基本加载地址。基本加载地址是在“Binary Images:”后面第一条内存地址所在的行。
获取 .app 文件的方法如下:
右键点击 xcarchive 文件并选择“显示包内容”,.app 文件在 Products/Applications 目录中。
我刚刚在这里写了一篇关于调试崩溃日志的文章:http://just2us.com/2010/10/reading-iphone-crashlog/
如果将日志拖放到Xcode中已经足够满足您的目的,那么您可能不再需要使用symbolicatecrash.sh。 我正在使用3.2.4版本,也找不到该脚本。
symbolicatecrash
我仍然能够符号化这些崩溃。但我肯定更喜欢 XCode 自动符号化它,只是它并不总是这样。 - Sam正如苹果公司所解释的那样,Xcode会尝试自动符号化。 它使用symbolicatecrash
和spotlight来完成这个过程。但是,如果应用程序没有在本地构建或已被删除,那么必要的.app和.dsym文件将不可用。
因此,请保留发布版本的dsym文件和应用程序。构建工具通常会将.dsym文件压缩为.dsym.zip,并将.app打包为.ipa。您可以解压缩它们并将.app和.dsym复制到同一个文件夹中。然后,Xcode就能够使用spotlight找到它们了。
这里是我使用的简单方法:
Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
。 - Andrew$export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer/
命令来解决错误:"DEVELOPER_DIR" 未定义。 - Sazzad Hissain Khan