1

我需要跟踪我的程序。我做了符号断点:

在此处输入图像描述

完整的字符串是:

"Class name is @*(char*)object_getClassName(*(long*)($esp+4))@"

但是,我在控制台上只有第一个符号,而不是完整的类名,即:

“班级名称是'U'”

为什么?你有什么想法吗?

IDE:Xcode 4.6.2。LLDB。

4

1 回答 1

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)))
    
于 2013-05-21T04:36:00.847 回答