How to print out a property's contents using Xcode debugger?
Solution 1
Once you place a breakpoint, run, and the program stops at the breakpoint, hover your cursor over the variable/value you want to see like this:
You could also place an NSLog(@"%@", yourLabel.text);
to view the contents of that label/other object type.
One other option is to run GDB in the console like this:
gdb
attach <your process name>
And then use the po
(print-object) command to view the value of a variable like this:
po variableName
To view the value of primitive types (int
, float
, long
, double
, char
, etc.), you can just use the print
command while running GDB in the console like this:
print yourPrimitiveVariable
Hope this helps!
EDIT:
With the po
command, you can print out the value of an object using both the property name (self.myProperty
) or the ivar name (possibly _myProperty
). I demonstrate this here:
Solution 2
Try with following expression in debug area to print object,
p self.view.bounds.size.width
or use,
po self.view
p - Print is only uses to print normal/simple values while, po - Print Object works same as NSLog to print value of an object
Nosrettap
I recently graduated from Duke University as a computer science and economics double major. I am now working full time as a software developer. I am proficient in Objective-C and Java, and I know (to some degree) C, C++, Python, Perl, SML, Assembly, HTML, CSS, JavaScript.
Updated on July 09, 2022Comments
-
Nosrettap almost 2 years
I'm writing an iOS app and I need help using the built-in Xcode debugger. Suppose I have an object called
HomeViewController
that has three properties@property (nonatomic) BOOL finished; @property (nonatomic, strong) NSArray *myArray; @property (nonatomic, strong) NSString *myName; @synthesize finished = _finished, myArray = _myArray, myName = _myName;
Suppose I have a breakpoint in this class. How would I view the contents of these properties? I've tried things such as
po myName
,print myName
andprint [self myName]
but I can't figure out how to do this. I've tried using LLDB but I keep getting the same error that this person encountered (lldb fails to print variable values with "error: reference to 'id' is ambiguous") . The accepted answer to this question was, LLDB is broken and that I should just use GDB; however, I refuse to accept that something so fundamental is broken.Nevertheless, I've also tried using GDB with similar commands as above; however, I can't get GDB to work either. Help please
-
Nosrettap almost 12 yearsSo, if I use po do I have to print the ivar or is there a way to print using the property's name? (sometimes my properties have different names than their corresponding variable)
-
pasawaya almost 12 years@Nosrettap Try using the property name and if it doesn't work, I'll try to find a workaround.
-
pasawaya almost 12 years@Nosrettap - I tested out the
po
andprint
commands and it looks like it works fine with both the property and ivar name. See my update... -
Nosrettap almost 12 yearsWhenever I try to do this I keep getting the following error:
error: error: reference to 'id' is ambiguous note: candidate found by name lookup is 'id' note: candidate found by name lookup is 'id' error: 1 errors parsing expression