我正在追踪OS X应用程序,我希望可以在iOS上找到这样的方式:
lldb Xcode: error: 'printf' is not a valid command
有没有办法这样做?我试过了
expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) )
我认为OS X使用的是64位寄存器。所以这个命令不起作用(实际上,它不起作用)。我该怎么写这个命令?或者有一个简单的方法来做同样的事情?只需跟踪名为
的类和方法答案 0 :(得分:8)
您在上面引用的命令仅适用于在Mac上作为i386进程运行的iOS模拟器应用程序。 $esp+4
表示第一个参数,$esp+8
表示在i386 ABI中传递的第二个参数。在x86_64和arm上,前几个参数在寄存器中传递$arg1
,$arg2
便利名称。所以试试
p (void)printf("[%s, %s]\n", (char*)object_getClassName($arg1), $arg2)
用于arm / x86_64体系结构。 (当然,p
在这里是expr --
的别名 - 同样的事情,只是少输入。)