2012-07-16 66 views
10

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

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

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

假设我有此一等级断点。我如何查看这些属性的内容?我已经尝试了诸如po myName,print myNameprint [self myName]之类的东西,但我无法弄清楚如何做到这一点。我试过使用LLDB,但是我一直得到这个人遇到的同样的错误(lldb fails to print variable values with "error: reference to 'id' is ambiguous")。这个问题被接受的答案是,LLDB被破坏,我应该只使用GDB;然而,我拒绝接受这样重要的东西被打破。不过,我也尝试过使用GDB和上面类似的命令;但是,但是,我无法让GDB工作。请帮助

回答

23

一旦你放置一个断点,运行和程序在断点处停止,将光标悬停在变量/值,你希望看到这样的:

enter image description here

,你也可以的地方NSLog(@"%@", yourLabel.text);查看该标签/其他对象类型的内容。其他

的一个选项是在控制台这样运行GDB:

gdb 
attach <your process name> 

然后使用po(打印对象)命令,以查看一个变量的值是这样的:

po variableName 

要查看原始类型的值(int,float,long,double,char等),您可以使用print命令whil e在控制台上运行GDB,像这样:

print yourPrimitiveVariable 

希望这有助于!

编辑:

随着po命令,可以打印出使用这两种属性名称(self.myProperty)或的ivar名(可能_myProperty)的对象的值。我该在这里展示:

enter image description here

+0

因此,如果我使用宝,我是否必须打印伊娃或有没有使用该属性的名称打印的方法?(有时我的属性名称与其相应的变量不同) – Nosrettap 2012-07-17 00:36:05

+0

@Nosrettap尝试使用属性名称,如果它不起作用,我会尝试找到解决方法。 – pasawaya 2012-07-17 02:31:08

+0

@Nosrettap - 我测试了'po'和'print'命令,它看起来可以很好地处理属性和ivar名称。看到我的更新... – pasawaya 2012-07-17 04:56:50

2

尝试在调试区下面的表达式打印对象,

p self.view.bounds.size.width 

或使用,

po self.view 

p - 打印只用来打印正常/简单值 while, po - 打印对象与NSLog相同以打印对象的值