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

独自空忆成欢 提交于 2019-11-28 11:09:47

问题


I am using Xcode 4.3.3 and I want to set symbolic endpoints. I created a symbolic breakpoint for all objc_msgSend symbols and I wanted to combine it with a "Debugger output".

I followed the tips of this post in SO. However in my debugger the message

error: 'printf' is not a valid command.

appears. Any clue? I want for every function call a message [Class method] to be printed in the debugger area. Like this

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

回答1:


It works with lldb if you prefix "expr --" to the debugger command in the breakpoint settings:

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

The solution is not perfect however, because the debugger prints "no result" after each output:

[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.



来源:https://stackoverflow.com/questions/12693237/lldb-xcode-error-printf-is-not-a-valid-command

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!