如何手动标记iOS崩溃以查看崩溃日志

时间:2010-09-30 16:50:57

标签: iphone ios ipad symbolicatecrash crash-log

尝试调试应用。麻烦的是我找不到这个程序。

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

感谢。

6 个答案:

答案 0 :(得分:89)

编辑:: XCode 4.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从终端运行此内容:

  

查找/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的路径

使用以下方式从终端搜索:

  

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文件:

您必须拥有用于通过崩溃创建构建的存档才能获取dSYM文件。

以下是步骤:

  1. 右键单击(或 ctrl 点击)来自管理器的存档,然后选择"在Finder中显示"。
  2. 从finder中的xcarchive文件中,右键单击(或 ctrl 单击)此文件,然后选择"显示包内容"。然后你会看到一个" dSYMs"夹。
  3. 在" dSYMs"您将找到的文件夹" YourAppName.app.dSYM"您需要用来表示文件的文件。

答案 1 :(得分:5)

产品菜单下的Xcode可以使用插件。此插件可通过Alcatraz package manager获得,也可以直接下载from github

此插件内部包含一个shell脚本,用于运行以下命令以进行手动崩溃符号化。

  1. 将别名设置为symbolicatecrash.pl perl script
  2.   

    别名   symbolicatecrash = '/应用/ Xcode.app /内容/开发商/平台/ iPhoneOS.platform /开发商/库/ PrivateFrameworks / DTDeviceKit.framework /版本/ A /资源/ symbolicatecrash'

    1. 要查找symbolicatecrash,它是否应与上述别名不同:
    2.   

      查找/Applications/Xcode.app -name symbolicatecrash -type f

      1. 设置DEVELOPER_DIR变量:
      2.   

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

        1. 使用dSYM,崩溃可以象征为:
        2.   

          symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash   /path/to/MyApp.app.dSYM。

答案 2 :(得分:4)

表示崩溃日志的一种方法是在终端上运行以下命令:

xcrun atos -o MyApp.app/MyApp -arch armv7 -l 0xb7000 -f MyApp.crash

使用基本加载地址替换上面命令中的示例十六进制数(0xb700)。基本加载地址是紧接在

之后的行中的第一个内存地址

“二进制图片:”

获取.app文件:

右键单击xcarchive文件并选择Show Package Contents .app文件位于Products / Applications目录中。

答案 3 :(得分:2)

我刚刚在这里写了一篇关于调试崩溃日志的文章:http://just2us.com/2010/10/reading-iphone-crashlog/

如果将日志拖放到Xcode足以满足您的需要,您可能不再需要symbolicatecrash.sh。我使用的是3.2.4,我也找不到脚本。

答案 4 :(得分:2)

正如Apple解释的那样,Xcode will try to symbolicate automatically.它使用symbolicatecrash和聚光灯来做到这一点。但是,如果应用程序未在本地构建或已删除,则必需的.app和.dsym文件不可用。

所以请保留dsym文件和已发布版本的应用程序。构建工具通常会将.dsym文件压缩为.dsym.zip,并将.app打包为.ipa。您可以解压缩并将.app和.dsym复制到同一文件夹。然后Xcode将能够使用聚光灯找到它们。

答案 5 :(得分:1)

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

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