I am unable to post images as I don't yet have 10 rep so my apologies if any of this is vague.
I'm writing an ARC application for Mac OS X and it throws an EXC_BAD_ACCESS error. In an attempt to track down the issue, I have enabled Zombie Objects under the 'Diagnostics' Tab.
I then startup Instruments (Zombies)
Finally I record and cause the app to crash and the error is generated. However, instead of getting any zombie indicators in instruments, I get an app problem report for my app that I'm profiling saying that my app 'quit unexpectedly'. No stack trace is produced for me to navigate and that problem report isn't of much use to me.
Could the EXC_BAD_ACCESS error be caused by something other than dereferencing a pointer to memory that has been released? Should I always expect to get Zombies in this case when there is an EXC_BAD_ACCESS error? If so then how can I see the zombie? What else do I need to configure to get the zombies?
Thanks
Could the EXC_BAD_ACCESS error be caused by something other than dereferencing a pointer to memory that has been released?
Yes. That error simply means that your program tried to dereference a pointer that refers to a location that your program isn't allowed to access. That could be because it points to an object that no longer exists, but it can also happen when you use a pointer without setting it to something valid in the first place, or when you incorrectly try to use a non-pointer value as a pointer.
Should I always expect to get Zombies in this case when there is an EXC_BAD_ACCESS error?
No, NSZombieEnabled only helps you find cases where you're trying to access a deallocated object. It won't help you with other cases that produce EXC_BAD_ACCESS.
You could try adding an exception breakpoint in Xcode.
Click the "Breakpoint navigator" tab in Xcode
Click the plus sign
Click "Add Exception Breakpoint"
Related
I got a crash in my test flight version of an iOS application, but when I check the Xcode crash log system, I am getting the crashed line and crashed function name. But I was not able to find the reason of crash. Does anybody know how to find out the reason of the crash occurred?
Here is the screenshot of the crash log of Xcode -> Organiser.
From this I am not getting the crash reason.
There is a way to show the report in Finder, as per https://help.apple.com/xcode/mac/11.4/index.html?localePath=en.lproj#/devc8ced2ea3 by Control+Clicking in the list of crash reports on the left.
Please update your question with the .crash file, which should provide full information about the crash.
The function that actually crashed is objc_msgSend. The most likely cause is that you sent a message to an object that had a different type than you and the compiler expected.
this is a simple game running on iphone device, it will crash in some cases.but xcode only display this message:
error: memory read failed for 0xd00000000
there is no stack in the left panel.
i found the value in register pc 0xd00000000, it looks like the base address of this process.
i have add a exception breakpoint in xcode it will not active before crash.
this is the memory usage image, i have test it on iphone x:
so i want to know, how to find the directy reason of this crash? is there any method to break the process when the register change to a special value, in this case, when the pc register change to 0xd00000000, make xcode break.
stackoverflow exception cause this crash, it make my stack memory crashed,so xcode can't get the valid stacktrace of this tread.
I'm getting this error exc_bad_access code=1 address= xcodein my IOS app so I've tried to use the zombie tool like this :
Product->Profile->Zombies then I click on start recording (the red dot)
Also I've check the Enable Zombie Objects in
Product->Scheme->Edit scheme->Run->Diagnostics
The problem is when I'm using the zombie mode and I try to simulate the error, the error is not simulated, not detected. When I run my project in normal mode, debug, the error occurs and the app crash.
So what I've missed here ?
Note this is the first time I use the zombie tools. Thanks.
Update
Error :
The problem with NSZombie here is that it keeps objects alive instead of deallocating them, but turns them into special objects that complain as soon as you try to call a method on them.
However, if you have some code like a block that just tries to access an instance variable (without calling a method on that object), this will now succeed as the object's memory region is now still available.
If you haven't done so already, simply try running your code in the normal debugger without NSZombie as that should tell you where the crash happens in the stack trace.
I am developing the application for over 6 month.
After everithing was developed and tested, I put app aside for 2 weeks and now when I run it it start crashing without any warning:
Even if I hit Continue Execution over 20 times still nothing in log.
I have all exceptions break point and malloc_errer_break set.
App crash when I move from screen to screen (When I open 2 screen or when I close it).
Most of the time EXC_BAD_ACCESS happens when you use an object that no longer exists.
You could check for Zombies during run-time to see if you use any of your object which doesn't exist anymore.
Let me guess - you need to change a property to strong (from weak). Name of that problematic property you will find in the console after enabling check for zombies (press ⌘⇧< then check Enable Zombie Objects in Diagnostics/Memory Management)
This a very generic error, I suggest to review your code and try again and as Anc Ainu said the reason is of using an object thats no longer exists.
I recommend to set up Exception breakpoint to get place from
which your app crashes.
To make this breakpoint enabled go to breakpoint tab, then tap on plus button and choose 'Add Exception Breakpoint'.
2. And yes, enabling NSZombies also could help
you.
I'm trying to debug a crash (likely memory related) but whenever the app crashes while debugging on iPad device Xcode (4.2) shows Paused with no backtrace for any thread (GDB). Switching to LLDB provides even less -- the app crashes, console shows nothing and Xcode ends debugging.
The crash only occurs after intense use and is likely related to insufficient memory.
I can't find any info related to the crash though. Anyone else experienced this behavior?
Have you set the exception breakpoint?
got to breakpoint editor pane
click on the [+] in the bottom left corner of the pane
choose add exception breakpoint
Now you should see a stacktrace if an exception occurs.
"Appearing after intensive use" indicates to excessive memory usage and memory leaks, and not that not enough memory is available.
Run the application on your device with instruments running and turn on the leaks module to find where you are not freeing allocated memory.