Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symbolicate crash log - Xcode 8 / macOS app

I'm trying symbolicating a crash log that I received from an user by e-mail.

I used traditional symbolicatecrash command in Xcode.app, however symbolicatecrash command just failed and returns the following message.

$/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash MY_APP.crash MY_APP.app.dSYM > readable.crash
Unsupported crash log version: 12 at /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash line 614.

And as it says, the report version of the crash log I wanna symbolicate is 12.

Date/Time:             2016-10-15 15:40:42.625 +0900
OS Version:            Mac OS X 10.12 (16A323)
Report Version:        12

My app is a pure Cocoa app for macOS (formerly OS X, not for iOS) that was build with Xcode 8.0 on macOS Sierra, distributed on the Mac App Store and written in Swift.

Meanwhile, Xcode 8.0's organizer successfully symbolicates crash log of the same app version that were received via MAS. So I suppose, the dSYM file is at least correct. But something is going wrong.

Does anyone know how I can symbolicate plain-text crash log its report version is 12?

like image 343
1024jp Avatar asked Oct 15 '16 07:10

1024jp


People also ask

How do I Symbolicate a crash file in Xcode?

To symbolicate in Xcode, click the Device Logs button in the Devices and Simulators window, then drag and drop the crash report file into the list of device logs. Crash reports must have the . crash file extension. If a crash report doesn't have a file extension, or has a different file extension like .


2 Answers

Finally, I found how to symbolicate my crashlog for macOS app!

I've followed the instruction in the gist below and obtained human-readable lines.

How to symbolize OSX crash logs -gist

Thus, briefly speaking, for instance for this line:

0   com.MY_DOMAIN.MY_APP        0x000000010febce85 0x10fdc1000 + 1031813

run the following line in Terminal:

atos -o MY_APP.app/Contents/MacOS/MY_APP -arch x86_64 -l 0x10fdc1000 0x000000010febce85

then you'll get the readable line:

Document.init() -> Document (in MY_APP) (DefaultKey.swift:85)
like image 149
1024jp Avatar answered Sep 21 '22 01:09

1024jp


Use this command to symbolicate the whole file. Replace MyApp and MyCrashFile with the appropriate values and the memory address (0x102e27000) so the following line:

Thread 0 Crashed: 0 com.bundle.identifier 0x0000000102f0bfb5 0x102e27000 + 937909

becomes:

xcrun atos -o MyApp.app/Contents/MacOS/MyApp -arch x86_64 -l 0x102e27000 -f MyCrashFile.crash > c.sym.txt && open c.sym.txt

Tested on Mojave with Xcode 10.3

like image 27
Lex Lopez Avatar answered Sep 22 '22 01:09

Lex Lopez