Como rastrear a causa do SIGABRT

Estou mostrando o código para este problema, por exemplo, mas realmente a minha pergunta é: como eu deveria rastrear e entender os erros do SIGABRT? Eu li esta pergunta: sigabrt sem mensagem de erro , no entanto, eu não acho que isso diz respeito ao meu problema.

O exemplo que mostrarei abaixo, obviamente, não é um problema xib, e os tempos anteriores para obter o SIGABRT parecem ter mais a ver com exceções não tratadas. Eu tentei usar o bt do GDB, mas isso não ajuda. Não há um dump mais abrangente para visualizar? Eu também usei o NSZombie , mas eu realmente não entendo como usá-lo, então se essa é a sua resposta, por favor forneça um link para a documentação sobre como eu devo obter dados relevantes dele.

Aqui está o meu exemplo: estou tentando usar o Core Data. Meu projeto não foi originalmente configurado com ele, então eu tive que adicioná-lo manualmente, o que eu fiz indo ao meu projeto> Fases de Construção> Vincular Binário com Bibliotecas> clicando no sinal de adição e adicionando CoreData.framework

Em seguida, criei meu modelo de dados indo em File> New> Data Model. Eu criei alguns atributos e é isso

Depois disso, adicionei os methods adequados ao delegado do aplicativo (fiz isso criando um novo projeto com Core Data e depois copiando os methods):

 //code removed, as its not needed for the question/answer 

Depois disso, tentei salvar um valor no object gerenciado (mais uma vez, código copiado da implementação padrão com um novo projeto):

 //code removed, as its not needed for the question/answer 

Mas tudo que consigo quando executo o método addTime é o erro SIGABRT.

erro xcode

O SIGABRT aumenta quando um object recebe uma mensagem não implementada. Quantos avisos seu aplicativo tem? Tente navegar por eles e encontrar aqueles que o avisam “algum object pode não responder a algum seletor”, se você limpar o aplicativo de todos eles, provavelmente o funcionará corretamente.

EDIT: resposta dos comentários abaixo, que são muito úteis:

ok, aqui vai artilharia pesada – você já tentou usar breakpoints? Abra a sexta aba no seu explorador de projetos, no canto inferior esquerdo, toque em + -> Adicionar ponto de interrupção de exceção -> Concluído. Isso adicionará um manipulador de exceção que interromperá seu aplicativo na própria chamada de método que trava o aplicativo.

EDIT: A partir de xCode 5.0> Você não precisa mais especificar qual exceção é seu ponto de interrupção vai capturar enquanto o ponto de interrupção está sendo criado. Você só precisa apertar + -> Adicionar breakpoint de exceção e você é bom.

insira a descrição da imagem aqui

    Intereting Posts