MetricKit MXDiagnostic符号

问题描述

我正在尝试实现MetricKit,因此以后我可以分析MXCrashDiagnosticMXHangDiagnostic报告。但是,当我触发测试崩溃,然后执行Debug->Simulate MetricKit Payloads时,我总是在dictionaryRepresentation()中收到绝对相同的结果。 这是我获得MXCrashDiagnostic的示例:

[[AnyHashable("diagnosticMetaData"): {
    appBuildVersion = 2;
    appVersion = "1.0";
    deviceType = "iPhone10,6";
    exceptionCode = 0;
    exceptionType = 1;
    osversion = "iPhone OS 14.0.1 (18A393)";
    platformarchitecture = arm64;
    regionFormat = CA;
    signal = 11;
    terminationReason = "Namespace SIGNAL,Code 0xb";
    virtualMemoryregioninfo = "0 is not in any region.  Bytes before following region: 4000000000 REGION TYPE                      START - END             [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL UNUSED SPACE AT START ---> __TEXT                 0000000000000000-0000000000000000 [   32K] r-x/r-x SM=COW  ...pp/Test";
},AnyHashable("callStackTree"): {
    callStackPerThread = 1;
    callStacks =     (
                {
            callStackRootFrames =             (
                                {
                    address = 74565;
                    binaryName = testBinaryName;
                    binaryUUID = "A36D6CF4-CBE8-4FB9-9DC4-C7EE8C6431CC";
                    offsetIntoBinaryTextSegment = 123;
                    sampleCount = 20;
                }
            );
            threadAttributed = 1;
        }
    );
},AnyHashable("version"): 1.0.0]]

对于cpuExceptionDiagnosticshangDiagnosticscallStackTree的值始终相同。

我试图通过执行命令来符号化数据:

1. cd /Path/To/Archive/myApp.xcarchive/dSYMs/myApp.app.dSYM/Contents/Resources/DWARF/
2. atos -arch arm64 -o myApp 0x00074565

但总是得到相同的结果:

atos[79918]: respawning is disabled (because DYLD_ROOT_PATH or DT_NO_RESPAWN is set),but the analysis process does not match the SDK variant of the target process 0.
Analysis of malloc zones may fail.
0x00074565 (in myApp)

我没有在网上找到有关警告或xcode中任何参数的信息 我尝试遵循thisthis的符号化指南,也为this question提供了一些答案,但是看起来我没有正确的符号化数据,即使我确实正确设置了报告。

如果有人能让我知道我在想什么,以及如何正确地表示这些报告,我将不胜感激。

解决方法

我猜想,当您在XCODE中触发模拟metricKit有效负载时,它将始终提供包含MXDiagnosticPayload的相同数组。

,

调试->模拟MetricKit有效负载,这只是一个示例。不能用atos来表示。

唯一的麻烦是从用户那里收集有效载荷。