我需要跟踪我的程序。我做了符号断点:
完整的字符串是:
"Class name is @*(char*)object_getClassName(*(long*)($esp+4))@"
但是,我在控制台上只有第一个符号,而不是完整的类名,即:
“班级名称是'U'”
为什么?你有什么想法吗?
IDE:Xcode 4.6.2。LLDB。
我需要跟踪我的程序。我做了符号断点:
完整的字符串是:
"Class name is @*(char*)object_getClassName(*(long*)($esp+4))@"
但是,我在控制台上只有第一个符号,而不是完整的类名,即:
“班级名称是'U'”
为什么?你有什么想法吗?
IDE:Xcode 4.6.2。LLDB。
从屏幕截图看来,您*
在(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)))