nal*_*all 13 testing null warnings runtime objective-c
我知道在Objective-C中向nil对象发送消息是完全正常的.但是,我很好奇是否有任何运行时支持来标记这种情况.我可以看到这在测试/调试情况下很有用.
Nik*_*uhe 16
在调试器稍微摆弄之后,这就是我发现的.
您可以objc_msgSend
使用第一个参数上的断点条件将断点设置为零(接收方):
objc_msgSend
*(int*)($esp+4) == 0
当您运行可执行文件时,它会经常中断,因为将消息发送到nil是很常见的.要了解正在发生的事情,您可以进一步配置断点:
p (char*)*(int*)($esp+8)
在命令字段中输入现在继续执行时,您将在调试器控制台中看到所有消息名称(发送到nil).
以上所有仅适用于Intel Macs(模拟器中的32位Cocoa或Cocoa Touch).PPC或ARM体系结构使用其他寄存器名称和调用约定.我把它作为练习留给你,以了解如何在这些平台上运行;)
归档时间: |
|
查看次数: |
614 次 |
最近记录: |