I've inherited a project with several linked frameworks by virtue of gitmodules. For crash tracking we use Instabug. It keeps asking me for symbol files that I can't find. Note that I did manage to get some of the dSYM files from iTunes Connect.
An example of what it's asking me is:
F9E0A7B7-5989-3D98-A6ED-29F8D1B04A9E
Things I've tried that did not work:
1. can't find symbols for framework
2. using DWARF with dSYM Debug Information Format
3. built my project using both iOS10 and iOS11
Anyone else encounter this?
I'm using:
Xcode 9
Build target: iOS10
If you have enabled Bitcode, you can find the dSYMs inside your app's archive.
You can find the archive via the Xcode Organizer window, by selecting your app in the list on the left side of the window. Once you find the archive, right click on it and select Show in finder.
In the finder, right click on the archive file and select Show Package Contents. In there somewhere there should be a folder named dSYMs.
Related
I face to the following issue with iOS app (XCode 10.3):
Crashlytics says that I have a missing dSYM, and provides the missing dSYM UUID (I have both required and optional UUIDs missing)
The app is BitCode app, and dSYMs are downloaded from AppStore, and uploaded to Crashlytics. I see many other crashes from the other dSYMs that were downloaded and de-symbolicate correctly.
The app is multi-target app. Before, when the app was just single target app, everything worked fine. The additional targets seems to be an issue.
All targets have BitCode and DWARF with dSYM selected
All targets call Crashlytics run in build phase (at least I believe I do this correctly)
Targets are watch app, watch app extension, Siri intent, Siri intent UI, and the iOS app widget.
I have manually opened the downloaded dSYM from AppStore and the missing dSYM UUID is really missing.
I also checked the locally built app archive, and the dSYM UUID is not there (yes, expected result)
Any idea, where to get the missing dSYM, would make a bit happier... Please.
Sometimes the UUIDs that are assigned on appstoreconnect are incorrect. The crash reports contain the correct ones -- i.e. the stack trace attributes a line to the correct binary image.
In the case of the uploaded dsyms having incorrect UUIDs Crashlytics is not able to match the line in the stack trace to any uploaded dsyms so it flags them as missing.
But there is a way to rewrite the UUID of a dsym and then re-upload it to crashlytics.
Note: This method is risky. If you overwrite the dSYM's UUID with an incorrect one and then upload it to Crashlytics, there is no way to correct that mistake. So you need to be absolutely sure that you A) are looking for the correct binary image; and B) that you have the correct UUID.
Here is how to do it:
Step A: In Crashlytics:
Note down the version of the build for which a dsym is missing
Note down the UUID of the missing dsym
Step B: Find an unsymbolicated line in one of your crash files for that version:
(note: in most cases it's your app's binary image, in which case you can just skip all steps here and then just use your app's name as binary image)
Open Xcode -> Window -> Organiser
In the left-hand pane, select Crashes
Use the drop-down menu in the top left-hand corner to select the version you are interested in
Once all the crashes for that version are downloaded, locate the crash you are interested in
Find the line in the crash report you are interested in and which is not symbolicated
Note down the binary image
Step C-a: Locate and replace the dsym with the incorrect UUID manually:
Open Xcode -> Window -> Organiser
In the left-hand pane, select Archives
Select the archive that corresponds to the version you noted down in Step A)
In the right hand pane, select Download Debug Symbols
Once finished downloading, in the Organiser right click the archive -> Show in Finder
In Finder, right click the archive -> Show Package Contents
Go to the dSYMs directory
Optional: Sort the finder list by Size in DESC order
Starting from the top, right click the first dsym file -> Show Package Contents
Navigate to Contents -> Resources -> Dwarf
Compare the name of the file inside the Dwarf directory with the binary image name you noted down in Step B) 6.
If it matches, follow the steps outlined in this excellent writeup to replace the UUID manually
If it doesn't match, repeat step 9 - 11, going through all dsym files until you found the right one
Step C-b: Locate and replace the dsym with the incorrect UUID automatically:
Open Xcode -> Window -> Organiser
In the left-hand pane, select Archives
Select the archive that corresponds to the version you noted down in Step A)
In the right hand pane, select Download Debug Symbols
Once finished downloading, in the Organiser right click the archive -> Show in Finder
In Finder, right click the archive -> Show Package Contents
Go to the dSYMs directory
Use this command line program to replace the UUID by providing the binary image name and correct UUID
Try using mdfind "com_apple_xcode_dsym_uuids == <UUID>" to find a dSYM witha specific UUID on your machine.
If this doesn't work then my hunch is that crashlytics catches crashes from these non-supported targets, also shows missing UUIDs but the dSYM files are not available at all, not even on iTunes Connect.
I have enabled the project settings of the project and target and set Debug Information Format for both Debug and Release to DWARF with dSYM File.
I have enabled the Bitcode to NO.
But I am getting the error "we are missing dSYMs to process crashes for the versions below".
I have followed the below steps to generate dSYMs file.
1. Go to the Window Menu -> Organizer in Xcode.
2. Select the right version of build and click on the button "Download Debug Symbols" on the right panel
3. Right Click on right version of build and select show in Finder.
4. Select an .xcarchieve file then right click on that and click on Show Package contents
5. Then Go to *dSYMs folder* and select .dSYM file and compress that file.
6. Now Final Step is to upload compressed file on fabric.
My question is when i add the new DSYM file into the fabric, will it remove the existing crashes logs??
Yes, #Arun because every time you recompile your project after adding a line of code, the dSYM changes because the address of your lines of the code in resulting binary is not the same that's the reason remove the existing crashes logs. You can look below link https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#upload-symbols-script
#Arun, Make sure you are uploading the correct dSYM (UUID of missing dSYM matches with uploading dSYM). If fabric do not process these dSYM then reach out to us at support#fabric.io and we can look into this further.
Hello I have been digging to find the solution but unfortunately I have not been able to find an answer. My issue is that I have my application that uses crashlytics. When pulling my crashlytics I see the Dsyms missing issue, i tried to add all the missing ones through the organizer but unfortunately i am not able to find all of them. please note my applications are not in the app store and I do not have itunes connect I am using an enterprise account. I noticed when running my application through the simulator and forcing a crash, Fabric will ask me for a new dSYM that I am not able to find. where can i find this dsym? I have verified through my build settings that I have dWARRF with dSYM enabled on both debug and release. If you have any ideas please let me know. Thank you!!
If you’re using Xcode 10 on a new project, Xcode 10 adopts a new build
ordering that is independent of the ordered list in the Build Phases
of Xcode.
Put "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)" into your
Fabric Run Script’s “Input Files” section to ensure your
installation of Fabric goes smoothly.
Reference to Crashlytics documentation.
You can do the following (it works for me):
Archive a binary of your target. Select your Scheme and make sure you have "Generic iOS Device": selected. Then in the Xcode menu, go to Window->Organizer and you will see your build
Select the build. Check the date/time and version(build) numbers to ensure it is the one you want. Right-Click and select "Show in Finder"
Right-click in the .xcarchive file and select "Show Package Contents"
Look for the dSYMs directory. Right-click and compress.
Move the dSYMs.zip file to your Desktop for easy uploading to Crashlytics.
I know this should be a simple problem to solve, but I'm stumped.
Using Xcode 6.4, how can I create the .dsym file (this is for submission for Veracode scanning, if that matters).
All the instructions I can find are for Xcode <=5, and don't fully translate to Xcode 6.x
After archiving your app, in your derived data
~/Library/Developer/Xcode/DerivedData/
Go to your application
AppName-xxxxxxxxx/Build/Intermediates/ArchiveIntermediates/AppName/BuildProductsPath/Release-iphoneos
your .dsym file will be in this folder.
Finding the dSYM of a particular build through the Terminal can be quite cumbersome. Instead, use Xcode to do that. In the Window menu, choose Organiser. A list of your apps and archives appears. Select the one you are interested in. Right-click on it, and choose Show in Finder. You will end up in a directory with files called <AppName>-<ArchiveDate>.xcarchive, with the archive you selected in Xcode already selected in the Finder. Right-click again on it, and choose Show Package Contents. And you'll find here a dSYMs folder.
We have a pretty major application suite for a client with a couple application targets utilizing several static libraries that we made in house. All targets are contained in one XCode project file.
For some reason when archiving an application the dSYM file does not contain any debug symbols for static libraries. The result is when trying to symbolicate crash logs from field agents we cannot see what is going on inside those static libraries.
I attempted to create a new simple XCode project with one application target and one static library. Even then the debug symbols were missing. I fiddled with the build settings according to this https://github.com/TheRealKerni/QuincyKit/issues/91 without luck.
If I build FOR archiving the debug symbols are included. I ran dwarfdump on the resulting dSYM file and was able to see the symbols for the static libraries implementation files. However when I then attempt to archive the project the symbols are excluded.
Am I missing something? XCode version 4.4.1
I m using XCode 5.1.1 and was having the same problem.
The fix was to set "Strip Linked Product" setting under "Deployment" section to "No" for each dependent library project. For more detail, please see my post at
can i debug ios app installed from ipa archive
This appears to be fixed in a later version of XCode, currently using 4.6 and the problem went away.
If you are stuck using an older version then do the following:
Product > Build For > Archiving
Product > Archive
Open the built product from derived data, you can do this by right clicking on the Youapp.app file in Products group and selecting show in finder. Ensure you are in the Release-xxx folder. Copy the dSYM file generated there and replace the one produced by the archive process. To find where archived files are go to Organizer, Archives tab, right click on an item and show in finder.
Hope this helps.
By default, archive uses release build, which already stripe debug symbols. you can change archive build option to 'not stripe'.