Often bugs don't crash an application right away but merely lead to it becoming unresponsive or "hanging".
When I'm approached with such issues in my software, the first thing I ask for is a sample log obtained through Activity Monitor.
Because the public builds of my software don't contain any debug symbols, I only see ??? and a code offset for those spots that reference my code.
There are tools and services out there to symbolicate crash reports, but I'm not aware of anything such for sample logs, which have a different format.
So here's what I do to resolve symbols in sample logs that I receive.
Let's start with a sample log:
To resolve the symbols, I need the dSYM that was created alongside the build this sample was taken from. Each dSYM and app share a unique UUID. Here, it's B7BE5172-CEBA-3128-3805-4F81A1FCCA21.
To verify that you're using the correct dSYM, you can print the UUID of your dSYM using dwarfdump --uuid on the DWARF file in your dSYM:
If your dSYMs were indexed by Spotlight, you can also search for the UUID in Spotlight to find the dSYM corresponding to the sample log you received.
Using the Code Type, the Load Address and the code offsets in the Call graph, I can now take to the Terminal to resolve the numbers into symbols.
For a Code Type of x86, the Architecture is i386, for a Code Type of X86-64, the architecture is x86_64.
To open an interactive prompt, I type
or
in this example. I can then enter code offsets to resolve them into symbols:
Press Ctrl+C to exit the interactive prompt.
And that's it!