I used to symbolicate the crash report in Xcode 5.1.1 directly as there was "Symbolicate & Re-symbolicate" in Devices section of Organiser. But after upgrading to Xcode 6.1, I could find neither symbolicate nor resymbolicate option to view the crash Log. I'm confused. How to do it?
Previously I used to sync the device with iTunes and view the Crashes from ~/Library/Logs/CrashReporter/MobileDevice
. Clicking on any crash would open up with Devices(Xcode) and then symbolicate. But now, it opens up with Console and no option to symbolicate. Does Xcode 6.1 have any such option?
Steps to symbolicate crash log manually in Xcode 6
If you archived the release build before release, then go to STEP 2. Otherwise archive your final release build (without any code change).
To locate your archive file, open organizer -> choose your project -> choose the latest archive file -> right click over it -> choose 'show in finder'
Right click on '*.xcarchive' file and select 'show package content' option then go to Products folder -> Applications Folder ->YourAppName.app (.app extension is hidden in some machine)
Copy and paste your .app file in different location. Put the crash log file also in the same folder. Open terminal app and go to the folder which you pasted, through 'cd' command
And type the following command in terminal with your crash address
xcrun atos -o YourAppName.app/YourAppName -arch armv7 -l 0xbd000
0x0013f745
Note: If the above command doesn't work, then change "armv7 to armv7s" and check.
Eg: Crash log look like this, you need to get crash address and put it in the above command
3 CoreGraphics 0x266814d3 CGPathAddLineToPoint + 171
4 YourAppName 0x00140a8b 0xbd000 + 539275
5 YourAppName 0x0013f745 0xbd000 + 534341
6 Foundation 0x27152d6b __NSThreadPerformPerform + 383
7 CoreFoundation 0x2640a375
A plugin is available for Xcode under the Product menu. This plugin is available through Alcatraz package manager or can be directly downloaded from github.
This plugin internally incorporates a shell script that does the set up of running the following commands for manual crash symbolication.
- Set an alias to symbolicatecrash.pl perl script
alias
symbolicatecrash='/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash'
- To find symbolicatecrash, should it differ from the alias above:
find /Applications/Xcode.app -name symbolicatecrash -type f
- Set the DEVELOPER_DIR variable:
export DEVELOPER_DIR='/Applications/Xcode.app/Contents/Developer'
- With the dSYM the crash can be symbolicates as:
symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash
/path/to/MyApp.app.dSYM.
Simply connect an iOS device, open Devices > The Device > View Device Logs, then drag and drop the crash to the list of crash files for the that device. The crash will be added to the list and will be symbolicated as long as the original archive exist.
Connect the iOS device, open Devices (shift command 2), select the device and click 'View Device Logs'. On the left side bar, the crash logs will appear. Select the one you're interested in.
As long as you have archived the build that was running on the device at the time of the crash, the crash log will be symbolicated automatically after a few seconds. If not, right click the crash log and select 're-symbolicate log'.