On Jun 22, 2007, at 9:59 AM, Theodore H. Smith wrote:
On Jun 22, 2007, at 9:16 AM, Theodore H. Smith wrote:
STRIP_STYLE = all
That's probably it.
Chris
Really? I probably misunderstood the strip symbols option in Xcode then.
What should it be?
Xcode gives me these 3 options: "All Symbols - Completely strips the binary, removing the symbol table and relocation information. [all, -s] Non-Global Symbols - Strips non-global symbols, but saves external symbols. [non-global, -x] Debugging Symbols - Strips debugging symbols, but saves local and global symbols. [debugging, -S]"
If I strip them all, I lose the debugging symbols. If I strip the debugging symbols, I lose the debugging symbols.
Is it "non-global symbols", then?
There is no "No symbols" option :( That's why I thought it didn't matter. Because I have my "STRIP_INSTALLED_PRODUCT = NO" option set. I thought that cancels out the strip setting.
Now that I've read your original email more closely:
STRIP_INSTALLED_PRODUCT only affects your "install" build—that is, when you do an "xcodebuild install" from the command line, or set Deployment Postprocessing in your configuration. It's for stripping the product that you ship to customers, and isn't relevant to debugging.
The STRIP_STYLE only takes effect when STRIP_INSTALLED_PRODUCT is Yes, so those three choices of how to strip are heeded only when you strip. So it's not a factor here. Your build settings are correct.
From the looks of it, your binary has the symbol information for debugging—as you say, you trace it into the last member function in your code, then it jumps Somewhere Else and goes four stack frames deep and crashes, and you have no symbolics.
That means that the library or framework that you're calling into did not provide debug symbols. You can't get Xcode to produce symbols for a link library or framework that doesn't have them, so you need to figure out what's at 0x12cd4e0 and how you got there from ElfDataFuzzy.collect.
Some ways to do this:
- If you are crashing in Xcode, then the debugger might show what section or library you seem to be in, in the stack frame popup menu. - Use the Debug > Tools > Shared Libraries window to see what library includes that address. - If you're in the gdb debugger console, type 'info frame 0x12cd4e0'. This will show you what library it's in. Xcode shows this information in the stack display in the debugger.
Once you determine where the stack frames are, then you can proceed to figure out why they don't have symbols. Most Apple frameworks do; some don't. You may be in a linked framework of your own that was built stripped. You may (rarely) have jumped into corrupt code space for which symbols are not present. Hard to tell without knowing what exactly is at 0x12cd4e0.
Chris
|