iOS Tutorial Symbolicating a crash report

I will cover the steps required to symbolicate a crash report received from Apple.
The result is a readable stack trace.

It requires a local Mac.

The crash report is a text file that looks like:

SS-2016-07-19_10.22.38.png


1. Find the binary address:

SS-2016-07-19_10.23.58.png


2. Unzip the Archive.zip (the one used when uploading the app) and find the dsym.zip file. The application file is under: <app name>.dSYM\Contents\Resources\DWARF

Note that you can also take the application file from inside the ipa file. The difference between the two is small (whether Objective C line numbers will appear or not).

3. Create a text file with the stack trace addresses from Thread-0. The ones relevant to your code should start with the app name (Logo Ali in this case). The addresses are selected:

SS-2016-07-19_10.29.16.png


Tip: If you are using Notepad++ then you can block select by holding the alt key.

The text file content is:
B4X:
0x000000010015f42c
0x00000001000dd8bc
0x00000001000c0bc4
0x00000001000c30f8
0x0000000100125154
0x0000000183188a60
0x0000000183080488
0x000000010015e958
0x000000010015e13c
0x0000000100176908

4. Copy the text file to the Mac.

On the Mac we have a folder with two files, the application file and the text file.

5. Open the terminal and run:
B4X:
xcrun atos -o MyApp -arch arm64 -l <binary address> -f 1.txt

Output:

SS-2016-07-19_10.32.11.png


As we can see the error happened in: Main.Timer_Im_Tick -> Busca1.Monta_FrmBusca -> Busca1.Monta_Busca_Indicaco -> Funcoes.AddMap
And internally it happened when an object with an unknown type was converted to a number.

If you still have the generated source code of the compiled app (or if you didn't change the B4i code) then you can open b4i_funcoes.m file and see the exact error line (71).
 
Last edited:
Top