【问题标题】:Why can't LLDB print an IBAction's sender argument?为什么 LLDB 不能打印 IBAction 的 sender 参数?
【发布时间】:2014-03-21 20:13:56
【问题描述】:

我正在尝试在方法内的断点中打印发件人。我的方法有这个签名:

- (IBAction)purchaseButtonTapped:(id)sender

当我的程序在该方法中遇到断点时,我在 lldb 中键入 po sender,我得到了这个:

error: use of undeclared identifier 'sender'
error: 1 errors parsing expression

我使用的任何其他ppoc 命令都可以正常工作。如果我 NSLog 我的发件人,例如NSLog(@"%@", sender); 它确实可以毫无问题地打印我的 UIButton 对象。这是 lldb 中的错误,还是我的大脑因为编码数小时而变成了无生命的熔岩,而我看不到明显的东西?

【问题讨论】:

  • 如果方法中有NSLog语句,那么调试器中可以po sender吗?
  • 是的,我可以。更奇怪的事情:我已经删除了NSLog,现在我可以po sender 也没有错误。这是编译器优化错误还是什么?

标签: objective-c xcode xcode5 lldb


【解决方案1】:

在发布版本中,如果方法不使用sender 参数,编译器不会在调试符号表中为其创建条目。所以你不能在调试器中po sender。如果您知道参数是如何传递的(在哪个寄存器中或在堆栈的哪个位置),您可以这样打印。

在调试版本中,您应该始终能够po sender

【讨论】:

  • 这是一个调试版本。这可能是编译器/调试器的错误。
猜你喜欢
  • 2013-09-23
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2014-04-22
  • 2017-11-24
相关资源
最近更新 更多