Memory Leaks instruments warning - iphone

I have removed the NSZombiesEnabled from Debug run time argument in the environment variables.

In my project neither option Enable Zombie Objects was checked, but when I disable the option "Use the Run action's argumments ... " worked for me.

In my case I had to turn off the NSZombieEnabled in the Profile scheme.

In your Scheme -> Edit Scheme -> Diagnostics -> Enable Zombie Objects is set to off?

Related

Xcode breakpoints not showing current objects

I've recently run into a really frustrating problem. When I set a breakpoint, and my program stops, the objects aren't shown in Xcode. I don't get the typical 'self' or any of my other objects. I tried restarting Xcode and my computer. I don't really know what else to do.
I'm running Xcode 4.6.1. Has anyone else run into this problem?
I usually get this error when I have compiler optimization turned on. The compiler will generate code which does not necessarily follow your code logic flow.
Go to your project in the navigator -> Target -> Build settings -> Search for optimization level -> expand optimization level -> select the debug line -> change to none in both columns of your project and target.
Hope this helps.

iPhone app crash without any log

My application is crashing after play with it 10 min.
And in console nothing is show about this crash and no waring, no logs.
And I am not getting any memory warning.
Please help me.
See Next to stop button your project name will be there click there and go to edit Scheme -> Argument -> Environment Variables -> click on + button and write NSZombieEnabled and then value YES.
It will tell that where exactly your app is crashing.
Try setting your Run Static Analyzer to YES then shift+Command+B. See if you have potential Memory Leaks. Or try running you code with Intruments.
or try this:
Edit Scheme
then add the NSZombieEnabled like the image below.
Try Adding breakpoints in the code to check the point where application is crashing..

Tracking variable or memory change in Xcode?

Is there any way to track variable changes or memory changes in Xcode? I'm looking for functionality like Visual Studio's data breakpoint.
I want to know where my object's view frame is being changed. I want to set a breakpoint at a member variable and run it. Then I could determine where it's changed.
Xcode uses gdb (or lldb, but that's another story) to implement its debugging functionality. gdb has the ability to set hardware watchpoints and hence so does Xcode.
This is a useful page for generic debugging of memory errors. Xcode's debugging console window is really just a gdb shell, you can type in commands as you please. The ever-helpful Quinn Taylor explains how to do so in this related post.
If you'd rather avoid interacting with gdb directly, you can right-click a variable in Xcode's debugging window and select "Watch Variable". Xcode will then alert you whenever your variable's value has been changed.
You can use hardware watchpoints.
You have to get the address of the variable you want to track (type p &my_var in gdb prompt).
It will print somehting like 0x12345678.
With gdb: type watch *(int *)0x12345678.
With lldb: watch set expression (int *)0x12345678 (or w s e (int *)0x12345678)
This assumes your variable is an int. It will create an hardware watchpoint on this address.
Hope this helps.
Yes.
Under the Run menu there is "Debugger" which provides a visual frontend to gdb.
Also, there is a breakpoint button next to the Build and Run button. You can click that and manage your breakpoints under Run > Manage Breakpoints.
I know this post is old but in case you are still wondering I posted a detailed answer here: In XCode 6 how can you set a watchpoint without stopping execution?

XCode debug vs release build when debugging

Ok, i think i've seen it all now.
For about 24 hours i've been trying to debug my app, trying to find where all the weird crashes are coming from all of a sudden. I've been debugging via Simulator/Debug mode. As usual, when i hit a breakpoint, i could see the value of variables (most of the time). Then suddenly i was unable to view variables no matter what i did (btw, im talking about mouse-hovering as for some stupid reason my xcode disabled all the debugging tools from the debug menu).
Long story short, out of sheer loss of things to do, i decide to debug with Release mode. Now I can hit breakpoints and see the contents of my variables. And whats even more confusing is that now xcode gives me a much more comprehensive view of the variables that im 'watching' (hovering over).
I know Apple likes to do things different. But what the heck!? Can somebody please slap me and then tell me what im not understanding here?
First, the configurations "Debug" and "Release" are just names, you could also name them "Jon" and "Carla" if you want. They are just names for a configuration sets that you can modify and you can tweak them so that for example the "Debug" configuration is not suitable for debugging any more. So if you (accidentially) disabled generating debug symbols in your "Debug" configuration you would get exactly what you described.
Go to "Project" -> "Edit active target". Select the "Build" tab and select the "Debug" configuration in the drop down box on the upper left. Select "Show all settings" in the drop down box below and type "debug" in the search bar right next to these two drop down boxes.
There should be a setting "Generate Debug Symbols", make sure its check box is set. "Level of Debug Symbols" should be set to "All Symbols". Also, the "Debug Information Format" should be set to "DWARF with dSYM file".
After changing the settings, clean your project ("Build" -> "Clean") and build again.
Hope that helps.

Xcode, no debug symbols for certain subclass

I'm using Xcode 3.2.3 and iPhone SDK
So I'm trying to debug a UIView subclass, I hit a breakpoint in an overridden method and I can't see any symbols in either the GUI or gdb, just globals and registers.
This is what I see:
(gdb) po self
No symbol "self" in current context.
Yet when I set a breakpoint in a UIViewController subclass, all the symbols are there:
(gdb) po self
<MyViewController: 0x5c18ae0>
Current language: auto; currently objective-c
Some things I've tried:
clean all/rebuild
restart Xcode
change between debug and release
config these options in Project
settings:
GCC_DEBUGGING_SYMBOLS = All
Symbols DEBUG_INFORMATION_FORMAT = DWARF, DWARF w/ dSYM File
BUILD_VARIANTS = normal, debug
threatening Xcode by swearing at it and typing
rm -rf /Developer into a root bash prompt
Please help, my fingers are bleeding from debugging with NSLog
I experience this bug often. My workaround is typing the bt command on the gdb console, it then automagically sorts itself out and starts recognizing symbols in the current context.
So changing from Debug to Release did the trick and I have all my debug symbols.
I think it's just a bug in the 4.0 SDK.
Hmmm, tried to repro this in 3.2.3 and SDK4 Final with no success -- able to debug UIView subclass as expected. Is this occurring using one of the beta releases?
Happening to me, on a non-beta release. I just noticed that it only occurs when calling a class-defined method, ie (+) not (-)
I wouldn't mind not having a "self" pointer, but it also seems to wipe out all local variable displays in the debugger, and that is just wrong.
MTS' method worked for me. Changing from debug to release fixes this issue. How strange. I can disprove software evolved's theory, as I experience the error inside an instance method.
in gdb type bt.
If you see self=<value temporarily unavailable, due to optimizations> anywhere it's because xcode has been set to be optimized.
Go to the build settings and type optimization.
If optimization level for either debug or release is set to Fastest that's causing your issue.
Release should be left at fastest so your code run well when building for distribution. It's better to change your Build Configuration in Scheme.
opt+click the Run button. On the left click Run YourAppsName.app, then Info and select debug.