how to show variable value in Xcode's debug inspector - xcode

New to Xcode, but I want to check the value of variables in Xcode's inspector, like following, buttonFrame has origin and size property, but they are not displayed in the inspector, is there a way to show that?

The real solution here is using debug mode instead of release mode to build the app to the device, to change the mode:
project -> scheme -> check the target -> edit scheme -> run -> select the debug mode in the drop-down selector

You can use the po command as described in apple's documentation:
According to apple:
Print Description of “{variable}”. An equivalent to using po in the
console or using the Print Description button in a tool tip.
XCode Debugging Tools
But keep in mind, that if you don't see values for the button's frame and size, it could be that they haven't been set yet. Make sure that the break point you are using to inspect these variables is being set at a point in your code in which you are certain the view has been laid out viewDidAppear for example.

Related

In Xcode is there code that will open up the console for you?

Is there a way in Xcode to have your software open up the console for you? I would like to have it when my code compiles and runs in Debug to have the console open up automatically but in release for it to not open.
Thanks in advance.
A common way to achieve this is :
Open a new tab, and rename it 'Console' (or what name you want)
In this tab, show only the panes you want (in your case the console)
Go to Preferences>Behaviors
Tell Xcode to 'Show tab' and give it the name you set in 1. (you can set this at various moments, when build starts, or when app runs).
Now, each you will either compile or run your app, Xcode will switch to the tab you have set in Prefs.
You dont use code, you go to xcode pref's and do it there
This is where I came for the answer given and marked correct (although it's not clear it was what the asker quite wanted).
Arguably, a simpler version of the answer given is to set the Behaviors preferences to show the Debugger when a run starts. With the settings in the image below, this opens up the console (or the console + variable views or the variables view, depending on how it was last set - that's what 'Current Views' means).

Is it possible to inspect standard components?

I am trying to get familiar with the QtCreator IDE. However, I've come to notice that while debugging, I can't take a closer look at the standard components. Looking at the included picture, I can't go deeper into, say the QString name property of temp in the locals and watches view on the right side of the screen. Let's say I want to know it's length while debugging. I can't see that now, as I don't get more information about the name property.
My question is rather simple. How can I inspect these standard components (as the name property is a QString) deeper, showing me detailed info about the QString itself and not only it's contents.
Apparently, this is solved by de-selecting the Debug Helper from the Debug options menu (Tools -> Options -> Debug -> Debug helper tab).

Change code without relaunching Xcode

I've heard that the Xcode has an option to change the code and attach it directly to the existing build (run in the simulator for example).
It would be great if you have to move through many screens in the iOS application to get to the same location as before (menu1 -> menu2 -> menu3 -> content)
Could you please give me some info - what is the name of that process?
How can I do it?
How does it really work? - Let's say I've two UIViewControllers - one is with the table (let's call it MenuVC) - list of objects and once the cell was selected the second UIV.C. (let's call it DetailVC) is displayed showing details of that object. Will I've to go back to the MenuVC, do some magic tricks with Xcode and display the DetailVC again by pressing the cell? Or will the DetailVC be changed by itself but remembering the properties I've passed using MenuVC?
That feature was called "fix and continue", but it fell into disrepair and was removed from Xcode 4.

Does Xcode have a watch window?

Does Xcode have a watch window for variables? It has a window for local variables but that's not much help when I want to watch the value of a global.
I've been spoiled by VisualStudio, I know.
Solved! Right-clicking in the local variables window brings a menu option of "Add Expression". Type your variable name and now you are watching your variable/expression.
The language of "expression" instead of the more familiar "variable" threw me quite a bit. Hard to search for a solution when I have the terminology wrong. Seems obvious now.
Xcode Expression window
Open Debug Area via View -> Debug Area -> Activate Console (Xcode 9)
Right click -> Add Expression

How to enable NSZombie in Xcode?

I have an app that is crashing with no error tracing. I can see part of what is going on if I debug, but can't figure out which object is "zombie-ing".
Does anybody know how to enable NSZombie in Xcode 4?
Environment variables are now part of the "scheme".
To edit the scheme and turn on zombies:
In the "Product" menu, select "Scheme" > "Edit Scheme...".
Go to the "Run Foo.app" stage in the left panel, and the "Arguments" tab on the right.
Add NSZombieEnabled to the "Environment Variables" section and set the value to YES, as you could in Xcode 3.
In Xcode 4.1 and above, there's also a checkbox on the "Diagnostics" tab of the "Run" stage to "Enable Zombie Objects".
With Xcode 6.4:
I encountered the same problem with troubleshooting EXC_BAD_ACCESS and had hard time to find the setting with Xcode 4.2 (the latest one that comes with iOS5 SDK). Apple keeps on moving things and the settings are no longer where they used to be.
Fortunately, I've found it and it works for the device, not just Simulator. You need to open the Product menu in the Xcode, select Edit scheme and then choose the Diagnostics tab. There you have "Enable Zombie Objects". Once selected and run in debugger will point you to the double released object! Enjoy!
In short
Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
Product > Profile will launch Instruments and then you there should be a "Trace Template" named "Zombies". However this trace template is only available if the current build destination is the simulator - it will not be available if you have the destination set to your iOS device.
Also another thing to note is that there is no actual Zombies instrument in the instrument library. The zombies trace template actually consists of the Allocations instrument with the "Enable NSZombie detection" launch configuration set.
It's a simple matter of setting an environment variable on your executable (NSZombieEnabled = YES), and then running/debugging your app as normal.If you message a zombie, your app will crash/break to debugger and NSLog a message for you.
For more information, check out this CocoaDev page: http://www.cocoadev.com/index.pl?NSZombieEnabled
Also, this process will become much easier with the release of 10.6 and the next versions of Xcode and Instruments. Just saying'. =)
Product > Profile will pop up Instruments. Select zombies from the panel and go nuts.
Go to Product - Scheme - edit scheme - Arguments - Environment Variables set NSZombieEnabled = YES
In xcode 4.2
Goto, Product -> edit scheme -> click Run yourappname.app -> Diagonostics -> Enable Zombie object.
Here's a video and explaination how to use Instruments and NSZombie to find and fix memory crashes on iOS:
http://www.markj.net/iphone-memory-debug-nszombie/
As of Xcode 3.2.5 and Snow Leopard (Mac OS X 10.6), you can run your code through the Zombies instrument: Run > Run with Performance Tool > Zombies. That allows you to see particular objects and their retain counts on a timeline.
In Xcode 4.5.2 goto Product -> Edit Scheme -> and Under the Diagnostics tab check the check box in between Objective C and Enable Zombie Objects and Click on OK
To enable Zombie logging double-click the executable in the executables group of your Xcode project. At this point click the Arguments tab and in the Variables to be set in the environment: section, make a variable called NSZombieEnabled and set its value to YES.
In XCode 4.0: To detect NSZombie in Instruments, select the Simulator as your target (can't detect NSZomboe on device). Run Instruments (CMD+I) and select "Zombies" trace template. Enjoy.
In the preferences of your executable add the environment variable NSZombieEnabled and set the value to YES.
in ur XCODE (4.3) next the play button :) (run)
select : edit scheme
the scheme management window will open
click on the Arguments tab
you should see : 1- Arguments passed on launch
2- environment variables
inside the the (2- environment variables) place
Name: NSZombieEnabled
Value: YES
And its done....
NSZombieEnabled is used for Debugging BAD_ACCESS,
enable the NSZombiesEnabled environment variable from Xcode’s schemes sheet.
Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box
this video will help you to see what i'm trying to say.

Resources