How to symbolicate Mac OSX crash reports issued by Apple?
Asked Answered
I

3

30

For iOS crash reports, it is sufficient to drag and drop the crash report to the Organizer.

Symbolicating iPhone App Crash Reports

But this method doesn't work for Mac OSX crash reports.

How can I symbolicate my Mac OSX crash report ?

Thanks !!

Incentive answered 30/4, 2011 at 13:46 Comment(2)
This isn't a duplicate. It's about OS X apps not iPhoneSolfeggio
sorry i just wanted to jump in ;-)Methylamine
R
57

You can use the atos command to get the line number where the app crashed.

Heres a quick guide:

  1. Create a directory for your working files
  2. Open Xcode, select Window->Organizer, goto the Archive tab and find the version of your app that experienced the crash.
  3. Right click on the app archive and select "Show in Finder"
  4. Right click on the .xarchive, select "Show Contents" and find the AppName.dSYM directory and the app and copy them to your working folder
  5. Copy the stack trace to your working folder
  6. Open terminal and change to your working folder. An ls should show YourApp.app YourApp.app.dSYM stacktrace.txt
  7. Open your stack trace in TextEdit. Your going to need to find the Code Type from the header (system architecture - eg. X86-64) and the addresses of the crash. Search through the threads to find the one that crashed (it will say something like "Thread 2 Crashed") then find your objects. You need the two addresses (hex numbers) from that line to get the code line.
  8. Once you've got all the information you need to run the following in the terminal:

    atos -o YourApp.app/Contents/MacOS/YourApp -arch x86_64 -l [load-address] [address]

For example, heres an extract from a stacktrace:

Process:         MyApp [228]
Path:            /Applications/MyApp.app/Contents/MacOS/MyApp
Identifier:      uk.co.company.app
Version:         1.0 (1)
App Item ID:     774943227
App External ID: 218062633
Code Type:       X86-64 (Native)
Parent Process:  launchd [154]
Responsible:     MyApp [228]
User ID:         501

Date/Time:       2013-12-17 10:20:45.816 +0100
OS Version:      Mac OS X 10.9 (13A603)
Report Version:  11
Anonymous UUID:  7AA662B1-7696-A2C5-AF56-9D4BA2CE9515


Crashed Thread:  2

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

<snip>

Thread 2 Crashed:
0   libsystem_kernel.dylib          0x00007fff8b95a866 __pthread_kill + 10
1   libsystem_pthread.dylib         0x00007fff8bf4f35c pthread_kill + 92
2   libsystem_c.dylib               0x00007fff87571bba abort + 125
3   libsystem_malloc.dylib          0x00007fff897ae093 free + 411
4   uk.co.company.app           0x0000000103580606 0x10356e000 + 75270
5   uk.co.company.app               0x00000001035803da 0x10356e000 + 74714
6   com.apple.Foundation            0x00007fff8d00970b __NSThread__main__ + 1318
7   libsystem_pthread.dylib         0x00007fff8bf4e899 _pthread_body + 138
8   libsystem_pthread.dylib         0x00007fff8bf4e72a _pthread_start + 137
9   libsystem_pthread.dylib         0x00007fff8bf52fc9 thread_start + 13

I can see that the "Code Type" is x86_64, that Thread 2 crashed, and that on line 4 my code was running so we have the addresses we need. Using this information I run the following:

$ atos -o MyApp.app/Contents/MacOS/MyApp -arch x86_64 -l 0x10356e000 0x0000000103580606

This returns:

got symbolicator for MyApp.app/Contents/MacOS/MyApp, base address 100000000
obj_free (in MyApp) (somefile.c:135)

Telling me my app crashed at line 135 of somefile.c

Rattrap answered 20/12, 2013 at 10:21 Comment(7)
I love this answer. Out of all the answers related to this on SO, this is the only one that actually explains exactly what to do.Langston
I wrote Xsymbolicate, a tool that automates most of this: mattrajca.com/xsymbolicateRequest
Thanks @MattRajca, but it would be nice to also comment that this tool is commercial, and not free.Recrystallize
nothing like creating it just works stuff. Thanks apple.Darrin
Tip - if instead of the load-address you see the name of your app (or of any other binary image), locate the actual address under the Binary Images section of the log.Kapoor
Thanks! helped figuring it out on fixing my issue!Forelimb
Thank you. Excellent guide, I needed to symbolicate a macOS crash log and this is exactly what I needed.Bismuthinite
E
19

@inkjet 's comment above deserves its own answer. He built an app that does a full symbolication from your dsym and .crash file.

A free alternative to Sumbolon that I made: bch.us.to/apps/macsymbolicator — It uses atos in the same way described by Rich Able below. – inket Dec 24 '13 at 4:39

putting it all together:

  1. download Mac Symbolicator from here

  2. Open Xcode, select Window->Organizer, goto the Archive tab and find the version of your app that experienced the crash.

  3. Right click on the app archive and select "Show in Finder"

  4. Right click on the .xarchive, select "Show Contents" and find the AppName.dSYM directory

  5. Drag your .crash file and AppName.dsym to Sumbolon

  6. Magic happens

Engdahl answered 2/4, 2015 at 16:20 Comment(6)
As for June 2016 the link is alive and does its magic. Good job, thanx!Quatrefoil
Sorry, doesn't work for me! The little nice app has two problems. One, it isn't signed, so I have to allow it to run without verification, and then - I drag the crash and .dsym, and it hangs forever... There's no documentation for the tool, so I don't even know what "Magic" to expect - a new symbolicated crash file should be created? some UI with a window showing the crash? What does this tool try to do?Recrystallize
The app worked fine for me to symbolicate a mac app crash. Thanks!Algae
app is amazing, but is there a possibility to adapt it to "sample process" output? It generates essentially the same output as .crash, but app is not accepting them even if you rename itArdellearden
There is no AppName.dSYM directory in my archive, only an empty folder dSYMChart
Link is dead, I can only find it on untrustworthy download sitesNemeth
R
-1

this link

this link explains everything to symbolicate the crash log with the line no of crash. you just need to have .dsyms file, .app file and crash log in same folder

i looked around and find nothing better than this. so i am posting it by hoping this will help others.

Remake answered 8/12, 2016 at 8:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.