断点中@ exp @的字符串日志消息只有一个第一个符号

时间:2013-05-21 03:43:04

标签: objective-c xcode debugging

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

enter image description here

完整字符串是:

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

但是完整的班级名称我在控制台上只有第一个符号,即:

“班级名称是'U'”

为什么呢?你知道吗?

IDE:Xcode 4.6.2。 LLDB。

1 个答案:

答案 0 :(得分:2)

在屏幕截图中,您似乎在*之前有一个额外的(char *)。将字符串取消引用到其第一个字符。

更新:日志消息

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

也无法按预期工作,因为lldb打印指针值而不是C字符串。 作为解决方法,您可以使用https://stackoverflow.com/a/12695845/1187415中的方法:

  • 将操作设置为“Debugger Command”而不是“Log Message”,
  • 将调试器命令设置为

    expr -- (void)printf("Class name is %s\n",(char *) object_getClassName(*(long*)($esp+4)))