To debug an EXC_BAD_ACCESS, you can generally find out the where the dangling pointer is by enabling zombie objects.
Xcode
Choose edit scheme, then Diagnostics tab in the Run section, then click the 'Zombie Objects' option.
AppCode
Choose edit target, and add the following environment variable:
NSZombieEnabled=YES
Another cause for EXC_BAD_ACCESS can be infinite recursion, which can be found by adding some logging.
Update for C++:
To debug dangling pointers in C++ with the Clang compiler try using Address Sanitizer (ASAN) from Google.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…