Ios 如何符号化崩溃日志Xcode?

Ios 如何符号化崩溃日志Xcode?,ios,xcode,Ios,Xcode,Xcode 5 organizer有一个视图,可以列出所有崩溃日志。我们可以在这里拖放崩溃日志。但自从Xcode 6以来,我知道他们已经将设备移出了组织,并为其设置了一个新窗口。但我找不到一个地方可以查看在升级到Xcode 6后拖放到Xcode 5中的崩溃日志。有人知道答案吗?好的,我意识到你可以这样做: 在Xcode>Window>Devices中,选择左上角连接的iPhone/iPad/etc 查看设备日志 所有日志 您可能有很多日志,为了以后更容易找到导入的日志,您可以在此时继续删除所有日

Xcode 5 organizer有一个视图,可以列出所有崩溃日志。我们可以在这里拖放崩溃日志。但自从Xcode 6以来,我知道他们已经将设备移出了组织,并为其设置了一个新窗口。但我找不到一个地方可以查看在升级到Xcode 6后拖放到Xcode 5中的崩溃日志。有人知道答案吗?

好的,我意识到你可以这样做:

  • Xcode>Window>Devices
    中,选择左上角连接的iPhone/iPad/etc
  • 查看设备日志
  • 所有日志
  • 您可能有很多日志,为了以后更容易找到导入的日志,您可以在此时继续删除所有日志。。。除非他们对你意味着钱。或者,除非您知道崩溃发生的确切时间点,否则应该将其写入文件中。。。我很懒,所以我只是删除所有的旧日志(这实际上需要一段时间)

  • 只需将文件拖放到该列表中。这对我有用

  • 写这个答案是为了社区,也是为了我自己

    如果出现故障报告的象征性问题,可以通过以下方式解决:

  • 创建一个单独的文件夹,将
    Foo.app
    Foo.app.dSYM
    从相应的
    .xarchive
    复制到文件夹中。同时将
    .crash
    报告复制到文件夹中

  • 在文本编辑或其他位置打开崩溃报告,转到
    二进制图像:
    部分,并在那里复制第一个地址(例如
    0xd7000

  • cd
    放入文件夹中。现在可以运行以下命令:

    xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt
    
    xcrun atos-o Foo.app/Foo-arch arm64-l 0xd7000 0x0033f9bb

  • 这将对地址处的符号进行符号化
    0x0033f9bb
    。请确保为
    -arch
    选项选择正确的值(可以从
    二进制图像:
    部分的第一行获取,或者从崩溃报告中的
    硬件型号:
    和应用程序支持的arch中计算)

    您还可以将必要的地址(例如线程调用堆栈)从崩溃报告直接复制到文本文件中(在TextEdit中,按住选项并选择必要的文本块,或复制并剪切),以获得如下内容:

    0x000f12fb
    0x002726b7
    0x0026d415
    0x001f933b
    0x001f86d3
    
    现在,您可以将其保存到文本文件中,例如
    addr.txt
    ,并运行以下命令:

    xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt
    
    这将同时为所有地址提供一个很好的符号

    p.S.

    在执行上述操作之前,需要检查所有设置是否正确(因为
    atos
    将很高兴地报告基本上所有提供地址的内容)

    要进行检查,请打开崩溃报告,然后转到
    线程0
    的调用堆栈末尾。从末尾开始列出应用程序的第一行(通常是第二行),例如:

    应该是
    main()
    调用。如上所述对地址进行符号化(
    0x0033f9bb
    ,在这种情况下)应确认这确实是
    main()
    ,而不是某种随机方法或函数

    如果地址不是
    main()
    ,请检查加载地址(
    -l
    选项)和arch(
    -arch
    选项)

    p.p.S.


    如果由于位代码而无法执行上述操作,请从iTunes Connect下载您构建的dSYM,从dSYM(查找器>显示软件包内容)中提取可执行二进制文件,将其复制到目录中,并将其(即
    Foo
    )用作
    atos
    的参数,不要使用
    Foo.app/Foo

    ,而是确保您的Xcode应用程序名称不包含任何空格。这就是它对我不起作用的原因。所以
    /Applications/Xcode.app
    起作用,而
    /Applications/Xcode 6.1.1.app
    不起作用。

    你也可以参考这一个,我已经编写了手动崩溃重新符号化的逐步过程。

    步骤1

    将上述所有文件(MyApp.app、MyApp-dSYM.dSYM和MyApp-Crash log.Crash)移动到一个具有方便名称的文件夹中,方便您使用终端

    对我来说,桌面是最容易到达的地方;) 所以,我将这三个文件移动到桌面上的MyApp文件夹中

    步骤2

    现在轮到查找程序了,请转到以下适用于您的XCODE版本的路径

    使用此命令查找
    脚本文件
    find/Applications/Xcode.app-name-crash

    Xcode 8、Xcode 9、Xcode 11
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

    代码7.3
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

    XCode 7
    /Applications/XCode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

    Xcode 6
    /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

    低于Xcode 6
    Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

    Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources

    步骤3

    将找到的symbolicatecrash脚本文件的目录添加到
    $PATH
    env变量,如下所示:
    sudo vim/etc/PATH.d/Xcode symbolicatecrash
    ,然后粘贴脚本文件的目录并保存文件。打开新终端时,您可以在任何文件夹中调用
    /usr/bin
    中的命令

    从该位置复制崩溃文件,并将其粘贴到桌面/MyApp (等等……不要
    cd Desktop/MyApp — Press Enter
    export DEVELOPER_DIR=$(xcode-select --print-path)
    
    ./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM
    
    export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" 
    
    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash  /yourPath/crash1.crash > /yourPath/crash1_symbolicated.crash