ios - lldb Xcode : error: 'printf' is not a valid command

标签 ios xcode lldb

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

我按照this post in SO的提示进行操作。但是在我的调试器中消息

error: 'printf' is not a valid command.

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

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

最佳答案

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

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

但是,该解决方案并不完美,因为调试器在每次输出后都会打印“无结果”:

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

我没有发现任何东西可以抑制“无结果”输出,可能是不可能,参见this Open Radar .

关于ios - lldb Xcode : error: 'printf' is not a valid command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693237/

相关文章:

ios - 应用程序在前台 iOS 时未在通知托盘(顶部)中获取推送通知

ios - 将 CGRect 从 View 转换为 super View 不起作用

java - 初始化 StandardFileSystemManager 的最佳实践是什么

ios - UIAutomation 不适用于 IPA 的分发类型

lldb - lldb 是否像 gdb 一样有 "info threads"

swift - 使用 Swift/lldb 比较 Intel 和 Arm 寄存器

ios - 重新加载 TableView 时获取索引错误

iphone - 委托(delegate)对象未调用协议(protocol)方法

c - EXC_BAD_ACCESS 在函数调用后立即分配给变量

ios - iOS 中的 Google API OVER_QUERY_LIMIT 问题