Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
336 views
in Technique[技术] by (71.8m points)

objective c - How to track down cause of SIGABRT

I'm showing the code to this problem for example purposes, but really my question is: how am I supposed to track down and understand SIGABRT errors? I read this question: sigabrt with no error message, however I don't think this pertains to my problem.

The example I'll show below is obviously not a xib problem, and prior times getting SIGABRT seemed more to do with unhandled exceptions. I have tried using GDB's bt but this does not help. Is there not a more comprehensive dump to view? I have also used NSZombie, but I really don't understand how to use it, so if that is your answer, please provide a link to documentation on how I'm supposed to get relevant data from it.

Here's my example: I'm trying to use Core Data. My project was not originally set up with it, so I have had to manually add it, which I did by going to my project>Build Phases>Link Binary with Libraries>clicking the plus and adding CoreData.framework

Then I created my data model by going to File>New>Data Model. I created quite a few attributes and that's it

After that, I added the proper methods to the app delegate (I did this by creating a new project with Core Data, then copying the methods over):

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

After this I just tried to save a value to the managed object (once again, code copied from the default implementation with a new project):

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

But all I get when I execute the addTime method is the SIGABRT error.

xcode error

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

SIGABRT rises when an object receives unimplemented message. How many warnings does your app have? Try surfing through them and find the ones that warn you "some object may not respond to some selector", if you clean your app from all of these, you'll most probably get it working correctly.

EDIT: Answer from comments below which are very helpful:

ok, here goes heavy artillery - have you tried using breakpoints? Open the sixth tab in your project explorer, in the bottom left corner tap + -> Add exception breakpoint -> Done. This will add an exception handler that will stop your app on the very method call that crashes the app.

EDIT: As of xCode 5.0 > You no longer need to specify which exception is your breakpoint is going to catch while the breakpoint is being created. You just need to hit + -> Add exception breakpoint and you're good.

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...