I don't think I ask for much. Just the ability to reliably and repeatedly set breakpoints on functions that (honest, I swear) are included in the executable. Statically even. The ability to actually have a stack left after a SEGV. You know: just the whole reason for a debugger existing at all.
XCode does a nice job of hiding gdb beneath the swaddling of a (surprisingly usable) GUI, but that doesn't change the fact that it's still gdb underneath, and consequently just doesn't fucking work.
Update: All hail the Lazyweb! I got mail from one of the Apple gdb developers who suggested that I un-check the "Load symbols lazily" preference in XCode, and now breakpoints seem to be working fine again. (Apparently this lazy loading is an optimization that really only matters for huge programs, but messes things up if you are using bundles.)