wowzers .... Я наконец нашел проблему, и я не могу дождаться, чтобы поделиться.
"Guard Malloc" и "Enable Guard Edges" наконец-то помогли мне найти ошибку,Два массива Float32 были выделены с использованием calloc, но индекс, обращающийся к ним и записывающий в него Float32, был слишком большим на 1 (разве мы не слышали этого раньше?!?).
После включения Guard Malloc отладчик остановилсяпрямо в точке исходного кода, где произошел неправильный доступ, но не было слишком очевидно, почему.Мне надоел calloc (фактически так было всегда с моих ранних дней программирования на C), я изменил массивы на NSMUtableArrays, и думаю, что Guard Malloc снова остановился на той же строке кода (на этот раз NSMutableArray заменил указатели * Float32), но поскольку это Objective-C, он также сказал мне, что индекс вышел за пределы и дал мне трассировку стека.
Исправить, конечно, было легко, выделив правильные размеры для массивов, однако чтоМеня беспокоит то, что этот неправильный код был в приложении с 2008 года и никогда не вызывал никаких проблем!Просто сейчас, когда я добавил что-то в память приложения, оно должно было сместиться в «темную сторону».
Итак ... вот оно, когда вы получаете EXEC_BAD_ACCESS в своей основной базе данных, смотритедля calloc / malloc / free и check, перепроверьте и перепроверьте свои индексы.
Кстати, в Xcode 4 установка этих флагов для Guard Malloc и т. д. осуществляется через "Edit Scheme"