1

我正在使用 Xcode 4.3.3,我想设置符号端点。我为所有 objc_msgSend 符号创建了一个符号断点,我想将它与“调试器输出”结合起来。

我在 SO 中遵循了这篇文章的提示。但是在我的调试器中,消息

错误:'printf' 不是有效命令。

出现。有什么线索吗?我希望为每个函数调用一条消息 [Class method] 打印在调试器区域中。像这样

[UIApplication sharedApplication]
[UIApplication _isClassic]
[NSCFString getCString:maxLength:encoding:]
[UIApplication class]
[SLSMoleculeAppDelegate isSubclassOfClass:]
[SLSMoleculeAppDelegate initialize]
4

1 回答 1

4

如果您在断点设置中为调试器命令添加前缀“expr --”,它可以与 lldb 一起使用:

expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) )

然而,该解决方案并不完美,因为调试器在每次输出后都会打印“no result”:

[OS_xpc_dictionary, _xref_dispose]
<no result>
[NSObject, initialize]
<no result>
[OS_object, initialize]
<no result>

I have found nothing to suppress the "no result" output, it may be that it is not possible, see this Open Radar.

于 2012-10-02T18:11:22.733 回答