我有一个断点操作,并且正在使用下拉菜单中的 Log 选项。我想打印出字符串(摘要)值。我正在这样做:
the person name is: @p.name@
但这会打印内存地址。我可以切换到调试器命令选项并执行
po f.name
但后来我失去了我的描述,就像第一个选项中使用的那样。使用 Log 选项,有没有办法打印字符串值而不是内存地址?
您可以使用“调试器命令”将 NSLog 语句与断点一起使用,但您需要添加“expr”
expr (void)NSLog(@"The Person Name is %@", p.name)
-
您可以做几件事。从下拉列表中添加一个 Log 函数,然后添加另一个框并选择Debugger Command
并输入po f.name
。
如果你想让你的日志更复杂,你可以做更多这样的事情:
the person name is: @(const char *)[(NSString*)[p.name description] UTF8String]@
您最好的选择可能是只使用调试器的图形界面来观察变量。如果要记录消息,请使用NSLog
.
这是一个只使用一个动作的解决方案,并且使用的字符比expr
解决方案少。
但是,除非你添加void
这样的:
po (void)NSLog(@"the person name is: %@", p.name)
你会在你的日志中打印出一个恼人的“nil”。例如:
(lldb) po NSLog(@"foo")
nil
2013-06-19 14:42:59.025 TheMove[95864:c07] foo
(lldb) po (void)NSLog(@"foo")
2013-06-19 14:43:10.758 TheMove[95864:c07] foo
如果您可以忍受 nil(我可以),那么输入会更快并且更容易记住po
我最终对同一个断点使用了 2 个不同的操作。首先是一个日志,然后是一个带有 po varName 的调试器命令。唯一的缺点是它将打印在 2 个不同的行中。