【问题标题】:Xcode "po" commandXcode“po”命令
【发布时间】:2012-05-23 07:24:38
【问题描述】:

调试时,我需要检查一个私有NSString 成员的值,例如名为str。之后:

    self.str = xxxxxxx;

我在控制台中输入了“po self.str”,但只得到了“(NSString *) $37 = 0x00000000”
所以我尝试了:

    NSLog("%@", self.str);

...然后我看到了字符串值。

为什么我不能使用命令“po”检查var的值?

现在我知道这是因为我使用lldb 作为调试器,而不是gdb。所以“po”(print-object)命令只能显示指针的地址。在使用 lldb 时是否有任何关于打印对象描述的解决方案?

更新:我发现self 本身不可用。我猜这个问题与类实例有关,它是一个静态变量。这就是po找不到self的指针的原因吗?

【问题讨论】:

  • 你的 self.str 为空:0x00000000。
  • 仅供参考,这是 gdb-to-lldb 命令的映射,显示语法:lldb.llvm.org/lldb-gdb.html
  • 该属性可能在您尝试打印、调试并检查它是否仍然存在时已释放。

标签: objective-c nslog po


【解决方案1】:

你需要像没有点符号的方法一样调用它

po [self str]

或者,如果您知道支持变量的名称,您可以直接打印它

po _str

【讨论】:

  • 我看到了你之前所说的答案并尝试了。但是“po [self str]”和“po self.str”都会产生相同的输出“(NSString *) $37 = 0x00000000 ”。
  • 您是让调试器实际越过进行分配的行,还是停止分配?
猜你喜欢
  • 2016-06-29
  • 2021-03-07
  • 2013-04-23
  • 2013-01-23
  • 2014-10-07
  • 2021-02-17
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多