I found this one many weeks back and had it in my to-do list for the blog. Now that 5.1 is out, I feel guilty I didn’t write it up sooner. But then, my day job is keeping me very busy.
I had a long period where I could not fully symbolicate crash logs that were made by iOS 5.0.1 devices. The symbols of my app would be symbolicated, but the system symbols of the device would not. I was especially frustrated because a coworker with the exact same version of XCode could symbolicate those system symbols with no problem. Neither of us knew why.
After a huge amount of searching with Google and reading items on StackOverflow.com, I finally found a note saying the symbols in the iPhone 4S were corrupted somehow and they should be replaced with symbols from another device. I don’t know if there was a problem with all the iPhone 4S devices, or just some of them or just early ones.
As much as I tried to do this, I still could not symbolicate properly. I triple-searched my computer for all copies of symbols for 5.0.1 (9A405) and removed them. (You can compress them into .zip files if you want to keep them just in case.)
What I needed to know was to look in ~/Library/Developer/Xcode/iOS DeviceSupport Xcode 4.2 had been putting device symbol information in there. Once I got rid of that folder, and attached a device, XCode pulled a new copy of the symbols and symbolication worked like a charm.
Top top it all off, something about the symbolication script in XCode 4.2 works better than any of the previous symbolication scripts, either from Apple or from any developer site. While symbolication inside XCode can be horribly slow, it does work pretty well.