I'm unable to find any documentation on how to use atos given the content within an MXCrashDiagnostic's json representation but I think I have worked through most of it.
From this documentation here I have identified that this is the atos command I'm looking for.
% atos -arch <BinaryArchitecture> -o <PathToDSYMFile>/Contents/Resources/DWARF/<BinaryName> -l <LoadAddress> <AddressesToSymbolicate>
Using the following from my app AppNameHere this is what I extracted:
I did not have a .dSYM file with this UUID, but after I went to Xcode Organizer and downloaded bitcode generated symbols I had a .dSYM that matched this UUID.
So finally this is the command I created:
atos -arch arm64 -o acf5e4f6-edd8-36c3-a650-58c53d4d66a7.dSYM/Contents/Resources/DWARF/AppNameHere -l 0x4332388352 0x0000004332909892
Trial by fire, the numbers in the dump are decimal, you need to convert them to hex. The documentation doesn't specify the format of the 'address' of 'offset'.
Does anyone know how to get rid of the respawning message, or is that expected?
I noticed that the arch is arm64e in the report, but the dwarfdump of the .dSYM says just arm64. It seemed to make no difference specifying with the 'e' or not.
From this documentation here I have identified that this is the atos command I'm looking for.
% atos -arch <BinaryArchitecture> -o <PathToDSYMFile>/Contents/Resources/DWARF/<BinaryName> -l <LoadAddress> <AddressesToSymbolicate>
Using the following from my app AppNameHere this is what I extracted:
platformArchitecture (arm64e) from the diagnostic's metadata
Load Address (offset) 0x4332388352
Address 0x4332421432
UUID ACF5E4F6-EDD8-36C3-A650-58C53D4D66A7
Code Block [ { "binaryUUID": "432C7D54-5315-3EC7-A3BE-A48E873736A7", "offsetIntoBinaryTextSegment": 6762471424, "sampleCount": 1, "subFrames": [ { "binaryUUID": "ACF5E4F6-EDD8-36C3-A650-58C53D4D66A7", "offsetIntoBinaryTextSegment": 4332388352, "sampleCount": 1, "subFrames": [ { "binaryUUID": "9B2D02A4-C9C0-3CAF-BBD2-C1BCEE117E8E", "offsetIntoBinaryTextSegment": 6727446528, "sampleCount": 1, "binaryName": "libdyld.dylib", "address": 6727450176 } ], "binaryName": "AppNameHere", "address": 4332421432 } ], "binaryName": "UIKitCore", "address": 6774548544 } ]
I did not have a .dSYM file with this UUID, but after I went to Xcode Organizer and downloaded bitcode generated symbols I had a .dSYM that matched this UUID.
So finally this is the command I created:
atos -arch arm64 -o acf5e4f6-edd8-36c3-a650-58c53d4d66a7.dSYM/Contents/Resources/DWARF/AppNameHere -l 0x4332388352 0x0000004332909892
Trial by fire, the numbers in the dump are decimal, you need to convert them to hex. The documentation doesn't specify the format of the 'address' of 'offset'.
Code Block edorphy$ atos -arch arm64 -o acf5e4f6-edd8-36c3-a650-58c53d4d66a7.dSYM/Contents/Resources/DWARF/AppNameHere -l 1023B0000 10242F544 atos[84639]: 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. AppDelegate.initializeApplication(application:) (in AppNameHere) (UserAgreementManager.swift:37)
Does anyone know how to get rid of the respawning message, or is that expected?
I noticed that the arch is arm64e in the report, but the dwarfdump of the .dSYM says just arm64. It seemed to make no difference specifying with the 'e' or not.