如何手动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文件。

这里是步骤:

  1. 右键单击(或按Ctrl点击)组织者的档案,然后select“在Finder中显示”。
  2. 从查找器中的xcarchive文件中,右键单击(或按住Ctrl单击)此文件,然后select“显示包装内容”。 您将看到一个“dSYMs”文件夹。
  3. 在“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脚本,可以执行以下命令来设置手动崩溃符号。

  1. 将一个别名设置为symbolicatecrash.pl perl脚本

alias symbolicatecrash ='/ Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / Library / PrivateFrameworks / DTDeviceKit.framework / Versions / A / Resources / symboliciccrash'

  1. 要findsymbolicatecrash,它应该与上面的别名不同:

find/Applications/Xcode.app -name symbolicatecrash -type f

  1. 设置DEVELOPER_DIRvariables:

export DEVELOPER_DIR ='/ Applications / Xcode.app / Contents / Developer'

  1. 随着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他们。

这是一个简单的方法,我使用:

  1. 打开Xcode 6
  2. 插入你的开发设备
  3. 在Xcode中,转到窗口>设备>select您的设备
  4. 按“查看设备日志”
  5. 将您的报告拖到窗口中查看
Interesting Posts