如何使用Xcode调试器打印属性的内容?

时间:2012-07-16 22:06:43

标签: ios xcode gdb lldb

我正在编写iOS应用程序,我需要使用内置Xcode调试器的帮助。假设我有一个名为HomeViewController的对象,它有三个属性

@property (nonatomic) BOOL finished;
@property (nonatomic, strong) NSArray *myArray;
@property (nonatomic, strong) NSString *myName;

@synthesize finished = _finished, myArray = _myArray, myName = _myName;

假设我在这个班级有一个断点。我如何查看这些属性的内容?我尝试过诸如po myNameprint myNameprint [self myName]之类的内容,但我无法弄清楚如何做到这一点。我尝试过使用LLDB,但我一直遇到与此人遇到的错误相同的错误(lldb fails to print variable values with "error: reference to 'id' is ambiguous")。对这个问题的接受答案是,LLDB被破坏了,我应该只使用GDB;但是,我拒绝接受那些根本被打破的东西。

尽管如此,我还尝试过使用GDB和上面类似的命令;但是,我无法让GDB工作。请帮忙

2 个答案:

答案 0 :(得分:25)

一旦你设置断点,运行,程序在断点处停止,将光标悬停在你想要看到的变量/值上:

enter image description here

您还可以放置NSLog(@"%@", yourLabel.text);来查看该标签/其他对象类型的内容。

另一个选择是在控制台中运行GDB,如下所示:

gdb
attach <your process name>

然后使用po(print-object)命令查看变量的值,如下所示:

po variableName

要查看基本类型(intfloatlongdoublechar等)的值,您只需使用在控制台中运行GDB的print命令如下:

print yourPrimitiveVariable

希望这有帮助!

编辑:

使用po命令,您可以使用属性名称(self.myProperty)或ivar名称(可能是_myProperty)打印出对象的值。我在这里证明了这一点:

enter image description here

答案 1 :(得分:2)

尝试使用调试区域中的以下表达式来打印对象,

p self.view.bounds.size.width

或使用,

po self.view

p - 打印仅用于打印普通/简单值 而, po - Print Object与NSLog的工作原理相同,可以打印对象的值