Отладка исключений сигнала iOS в частном коде iOS - PullRequest
0 голосов
/ 18 февраля 2012

Я знаю довольно название.

Однако я, похоже, продолжаю получать эти загадочные ошибки, и все, что GDB показывает мне, это номер строки кода Apple, который сорвался. * Т.е. 1003 *

0x028235bd  <+0025>  jne    0x28235dd <_ZN2CA5Layer15collect_layers_EPNS0_17CollectLayersDataE+57>
0x028235bf  <+0027>  mov    0x4(%eax),%ecx
0x028235c2  <+0030>  test   %ecx,%ecx
0x028235c4  <+0032>  js     0x28235dd <_ZN2CA5Layer15collect_layers_EPNS0_17CollectLayersDataE+57>
0x028235c6  <+0034>  mov    0x8(%ebp),%edx
0x028235c9  <+0037>  mov    0x78(%edx,%ecx,4),%edx          <---- EXC_BAD_ACCESS

Я просто хочу повторить, что вышеприведенное, что я знаю, указывает на то, что к освобожденному объекту снова обращаются. Однако проблема заключается в том, как мне отладить это, когда у меня нет трассировки стека или даже значений регистра?

Это не только EXC_BAD_ACCESS, но и ошибки SIGABRT, иначе я мог бы использовать трюк NSZombieEnabled.

(Как еще примечание, эта трассировка вызовов связана с ViewControllers и т. П., Поэтому любые отладки указателей также будут полезны)

Еще раз спасибо.

1 Ответ

1 голос
/ 18 февраля 2012

Откройте код xCode, нажмите команду + 6, нажмите кнопку «+» внизу, выберите «Добавить точку исключения», нажмите «Готово». Теперь, если выдается какое-либо исключение, xCode выделит строку кода, которая его вызвала.

...