TL;DR
atos
gives me implausible info, namely that my own code is part of libobjc.A.dylib
or AVFAudio
. I was unable to desymbolicate via Xcode's Devices window.
I am well aware that there is vast info online on this topic — a lot of it out of date. (I have only once successfully desymbolicated a crash log...and that was back when you had to use iTunes to get the log.) In the What I Did section below, I summarize the widely-ranging advice I found. For the record, the most useful help is at https://developer.apple.com/library/archive/technotes/tn2151/_index.html
What I Got
My iOS app submission crashed during Apple's testing, and I got a crash report from App Store Connect. I downloaded the dSYM from Connect. Here are the (shortened) original, and desymbolicated (via atos
) lines:
0 libobjc.A.dylib 0x19236e670 0x19234d000 + 136816
-[MyClass myMethod:] (in MyApp) (MyClass.m:566)
1 AVFAudio 0x19f4c0698 0x19f49e000 + 140952
-[MyClass myMethod:atIndex:] (in MyApp) (MyClass.m:823)
It also locates the main()
entrypoint in the middle of a long header comment.
12 MyApp 0x1002158b0 0x1001e4000 + 202928
main (in MyApp) (MyClass2.swift:17) // Lines 1-23 are comments
This sort of points to my using the wrong dSYM file, but I have double- and triple-checked. Suggestions?
What I Did
- Go to App Store Connect
- Go to app Activity pane
- Click on build # for desired build
- I double- and triple-checked that I used the right build
- Scroll down, click on "Download dSYM"
- In Terminal, cd to Downloads folder
- Get relevant line of crash log file.
1 AVFAudio 0x19f4c0698 0x19f49e000 + 140952
- Execute this in Terminal:
atos -arch arm64 -o 74cd25d1-...dSYM/Contents/Resources/DWARF/MyApp -l 0x19f49e000 0x19f4c0698
- Get the following result:
-[MyClass myMethod:atIndex:] (in MyApp) (MyClass.m:823)
Which doesn't pass the sanity check because MyClass
is app code, not part of AVFAudio
.
I also tried using Xcode
- Open Organizer
- Select build that was submitted, and click "Download Debug Symbols"
- Rename log file suffix from ".txt" to ".crash"
- Connect device (iPhone) to laptop via USB
- Open Devices and Simulators window and select connected device
- Click on "View Device Logs" to trigger drop-down sheet
- Drag the .crash file to the left-hand pane of the Device Logs sheet
- Right-click on the log file's name and choose "Re-Symbolicate Log"
Nope, log stays in hex addresses.
One problem may be that Apple was using iOS 13.2 and my device has 13.1.3. I can't get 13.2 from the App Store, only the latest which is 13.2.3.