2014-02-20 43 views
0

我想在方法內的斷點打印發件人。我的方法有此簽名:爲什麼LLDB不能打印IBAction的發件人參數?

- (IBAction)purchaseButtonTapped:(id)sender

I型po sender到LLDB當我的程序打這個方法裏面的斷點,我得到這樣的:

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

任何其他ppo,或c命令,我使用沒有問題的工作。如果我的發件人是NSLog它打印我的UIButton對象沒有問題。這是lldb中的一個bug,還是我的大腦由於編碼了幾個小時而變成了無生命的熔岩,我看不到明顯的東西?

+1

如果你在方法中有'NSLog'語句,那麼你可以在調試器中使用'po sender'嗎? –

+0

是的,我可以。更奇怪的是:我已經刪除了'NSLog',現在我也可以''發件人'也沒有錯誤。這是一個編譯器優化錯誤什麼的? –

回答

2

在發佈版本中,如果該方法不使用sender參數,則編譯器不會在調試符號表中爲其創建條目。所以你不能在調試器中使用po sender。如果您知道參數是如何傳遞的(在哪個寄存器或堆棧中的哪個位置),您可以以這種方式打印它。

在調試版本中,您應該始終能夠使用po sender

+0

這是一個調試版本。這可能是一個編譯器/調試器錯誤。 –