问题
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