Crashlogs on OSX dsym files


#1

Hi
What do you guys do when you have a crash log from a desktop app, and it says stuff like:

18 com.YourCompany.YourApp 0x000000010b08276b 0x10ae8a000 + 2066283
19 com.YourCompany.YourApp 0x000000010aedc87e 0x10ae8a000 + 338046
20 com.YourCompany.YourApp 0x000000010aef0392 0x10ae8a000 + 418706
21 com.YourCompany.YourApp 0x000000010ae8e8b8 0x10ae8a000 + 18616
22 com.YourCompany.YourApp 0x000000010ae8e306 0x10ae8a000 + 17158
23 com.YourCompany.YourApp 0x000000010aec763c 0x10ae8a000 + 251452
24 com.YourCompany.YourApp 0x000000010aecf2f8 0x10ae8a000 + 283384
25 com.YourCompany.YourApp 0x000000010aed1598 0x10ae8a000 + 292248
26 com.YourCompany.YourApp 0x000000010aecf2f8 0x10ae8a000 + 283384

On the net I find ways to symbolicate this using a dsym file from the release, but the xcode projects created by Projucer does not create a dsym file as far as I can tell.
Is there a way to symbolicate the trace ?


#2

Anyone got more info on this? How can I get a dsym file from a project created with projucer.
Or am I missing something basic here?


#3

Just bumping this, hoping someone can tel me how I can set up my environment so that I can make sense of the OSX crash logs.


#4

Hi Nikolai,

Did you get any further with this? I’ve found that adding the following to the Release config Custom Xcode Flags field in the the Projucer generates the dSYM file(s):
DEBUG_INFORMATION_FORMAT=dwarf-with-dsym, COPY_PHASE_STRIP=YES, GCC_GENERATE_DEBUGGING_SYMBOLS=YES


#5

I had been turning on the Projucer setting “Debugging enabled” for the “Debug mode” property. This also enables GCC_GENERATE_DEBUGGING_SYMBOLS but it’s not ideal as it changes other things too. (For example, in a plug-in build inlcuding AAX it links to the Debug version of AAX rather than Release.)


#6

Hi
I added this to the release build:
GCC_GENERATE_DEBUGGING_SYMBOLS = YES, GCC_DEBUGGING_SYMBOLS = full, DEBUG_INFORMATION_FORMAT = dwarf-with-dsym, DWARF_DSYM_FILE_NAME = “(PRODUCT_NAME).dSYM", DWARF_DSYM_FOLDER_PATH = "(CONFIGURATION_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH)”

Debugging check box turned off


#7

Where are you putting these settings?


#8

On macOS we’re able to symbolicate easily by keeping the .dSYM files generated.

In our Xcode Exporter:
Xcode (MacOSX)
Strip local symbols - CHECKED

That’s it… for release.

Your dSYM files will be at:
<project_folder>/Builds/MacOSX/build/Release

To symbolicate the release builds make sure you’re using the exact build <> symbols (can be checked against their GUID).

The simple but functional way is using atos providing it the binary that the crash was generated from and the dSYM at the same path showing it the binary and adding the memory load address and then each address.

Eg:
atos -o ./MyPlug/Contents/MacOS/MyPlug -arch <x86_64 or i386> -l <address it was loaded> <address you'd like to symbolicate>


#9

Sadly the version of JUCE I’m using with this project doesn’t have teh strip local symbols option, nor am I getting a DSYM file in the release build when I manually enable it in Xcode. Not entirely sure what’s going on here … I’m going to try a different approach.


#10

Ah … light dawns. Generate Debug Symbols for release was off. That was simple … it’s not enough to ask for a DSYM file alone.