我需要追踪我的程序。我做了符号断点:
完整字符串是:
"Class name is @*(char*)object_getClassName(*(long*)($esp+4))@"
但是完整的班级名称我在控制台上只有第一个符号,即:
“班级名称是'U'”
为什么呢?你知道吗?
IDE:Xcode 4.6.2。 LLDB。
答案 0 :(得分:2)
在屏幕截图中,您似乎在*
之前有一个额外的(char *)
。将字符串取消引用到其第一个字符。
更新:日志消息
Class name is @(char*)object_getClassName(*(long*)($esp+4))@
也无法按预期工作,因为lldb打印指针值而不是C字符串。 作为解决方法,您可以使用https://stackoverflow.com/a/12695845/1187415中的方法:
将调试器命令设置为
expr -- (void)printf("Class name is %s\n",(char *) object_getClassName(*(long*)($esp+4)))