【问题标题】:How to print out a property's contents using Xcode debugger?如何使用 Xcode 调试器打印出属性的内容?
【发布时间】:2012-07-15 19:55:51
【问题描述】:

我正在编写一个 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 工作。请帮忙

【问题讨论】:

    标签: ios xcode gdb lldb


    【解决方案1】:

    放置断点后,运行,程序在断点处停止,将光标悬停在要查看的变量/值上,如下所示:

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

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

    gdb
    attach <your process name>
    

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

    po variableName
    

    要查看原始类型的值(intfloatlongdoublechar 等),您可以在控制台中运行 GDB 时使用print 命令像这样:

    print yourPrimitiveVariable
    

    希望这会有所帮助!

    编辑:

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

    【讨论】:

    • 那么,如果我使用 po 我必须打印 ivar 还是有办法使用属性名称进行打印? (有时我的属性的名称与其对应的变量不同)
    • @Nosrettap 尝试使用属性名称,如果不起作用,我会尝试寻找解决方法。
    • @Nosrettap - 我测试了poprint 命令,看起来它适用于属性和ivar 名称。查看我的更新...
    • 每当我尝试这样做时,我都会收到以下错误: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
    【解决方案2】:

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

    p self.view.bounds.size.width
    

    或使用,

    po self.view
    

    p - 打印仅用于打印普通/简单值 尽管, po - 打印对象与 NSLog 一样打印对象的值

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2023-04-08
      • 1970-01-01
      • 2015-11-25
      • 2017-02-02
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多