Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Manually Symbolicate iOS Crash to View Crash Logs

Trying to debug app. The trouble is I cannot find this program.

symbolicatecrash.sh

sudo cp /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash /usr/local/bin/

Is it a separate download? I am using XCode 3.2.3

Thanks.

like image 721
butchcowboy Avatar asked Sep 30 '10 16:09

butchcowboy


People also ask

How do I Symbolicate a crash log in iOS?

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 .

What is Symbolicate?

Symbolication is the process of converting them into human readable, class/method names, file names, and line numbers.

What is DSYM file in iOS?

A dSYM file is an ELF file that contains DWARF (debugging with attributed record formats) debug information for your application. DWARF is a debugging file format that supports source-level debugging.


2 Answers

EDIT :: XCode 4.3

You will want to follow the same steps as outlined in the original answer (below) with a few exceptions.

First, you need to fix the Xcode path. Open a terminal and run:

/usr/bin/xcode-select -print-path

If it displays "/Developer" or anything but "/Applications/Xcode.app/Contents/Developer/" then it is wrong. To fix this run the command:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/

You can now run all the steps below, with the exception that the symbolicatecrash command is in a new spot (again). This is because Xcode now installs as an app. To find symbolicatecrash run this from the terminal:

find /Applications/Xcode.app -name symbolicatecrash -type f

This should return:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

Before running symbolicatecrash you may wish to go to this directory like:

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/


Original Answer :: Xcode < 4.3

Path for symbolicatecrash

Search from a terminal using:

find /Developer -name symbolicatecrash -type f

For me this returned:

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

How to Manually Symbolicate a Crash Log

Run the symbolicatecrash command with the crash log as the first argument and your dSYM file as your second argument. Note that if you will be running symbolicatecrash from the current directory that you MUST put ./ in front like ./symbolicatecrash unless your PATH environment variable includes the directory that the command resides in.

I changed to the directory that had the symbolicatecrash command in it first (note: will be different for Xcode 4.3, see top):

cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/

Then I executed the following command:

./symbolicatecrash /somePath/MyCrashLogFile.crash /somePath/MyAppName.app.dSYM

How to Find the dSYM file:

You must have the archive that was used to create the build with the crash to get the dSYM file.

Here are the steps:

  1. Right click (or ctrl click) the archive from organizer and choose "Show in Finder".
  2. From the xcarchive file in finder, right click (or ctrl click) this file and choose "Show Package Contents". You will then see a "dSYMs" folder.
  3. Inside the "dSYMs" folder you will find "YourAppName.app.dSYM" file that you will need to symbolicate files.
like image 129
Sam Avatar answered Oct 04 '22 10:10

Sam


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.

  1. 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'

  1. To find symbolicatecrash, should it differ from the alias above:

find /Applications/Xcode.app -name symbolicatecrash -type f

  1. Set the DEVELOPER_DIR variable:

export DEVELOPER_DIR='/Applications/Xcode.app/Contents/Developer'

  1. With the dSYM the crash can be symbolicates as:

symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash /path/to/MyApp.app.dSYM.

like image 25
MaheshShanbhag Avatar answered Oct 04 '22 09:10

MaheshShanbhag