【问题标题】:Display value of a variable using Xcode breakpoint logging (LLDB)使用 Xcode 断点日志 (LLDB) 显示变量的值
【发布时间】:2013-12-13 16:47:06
【问题描述】:

我有一个数组,我想在断点处打印出来。我已经阅读了如何使用 @exp@ 执行此操作,因此我创建了一个日志消息断点,如下所示:

%B %H count: @(NSUInteger)[myArray count]@ objects: @(const char *)[[myArray description] UTF8String]@

这是打印出来的:

-methodName: 33 count: 1 objects: 0x6dec5890

从我读过的所有内容来看,这应该会打印出一个包含 myArray 中对象的字符串。然而,显然这并没有发生。我做错了什么?

我在 Xcode 5.0.2 上使用 LLDB。如果重要的话,该应用程序是 32 位的。

【问题讨论】:

  • 我可以重现您的问题。似乎“断点日志消息”功能有几个问题。比较 stackoverflow.com/questions/8059919/… 的另一个问题,以及可能的解决方法。
  • 感谢您的同情。事实上,我无法让日志记录工作,所以这就是我最终在调试器命令中使用的内容:expr (void)NSLog(@"%@ -- count:%u objects [%@]", (NSString *)NSStringFromSelector(_cmd), (unsigned)[myArray count], myArray) 当然,这并没有给我断点计数。 :-(
  • 如果 Apple 有人关心,我已经提交了 radar://15663740。

标签: xcode macos lldb


【解决方案1】:

此错误已在 Xcode 的最新版本中得到修复。 (我在 6.1.1 上)现在您只需在 @s 之间放置一个数组的名称即可获得预期的输出。无需投射!

%B %H count: @myArray.count@ objects: @myArray.description@

输出:

-applicationDidFinishLaunching: 1 count: 2 objects: @"(\n    one,\n    two\n)"

编码的换行符有点乱,但至少它有效!

【讨论】:

    【解决方案2】:

    为什么不创建一个 Python 断点操作来打印您关心的变量,然后自动继续?

    【讨论】:

    • 愿意提供一些代码来解释您的意思吗?请务必指定它是使用调试器命令操作还是日志消息操作。我更喜欢后者,因为它可以访问 %B 计数变量。
    【解决方案3】:

    我不明白你在做什么。 当我想在我的代码中打印或预览一个变量时,我会在我的变量之后添加一个断点。到达断点时,我只需将指针移到变量名称上,就会出现一个小窗口,我可以在其中看到变量的内容。

    看看这个答案:XCode 5 View Debugging Feature

    【讨论】:

    • 谢谢,但我要查找的数据变量每秒可能会被多次命中。不幸的是,在我的情况下,打破每一个并悬停是不切实际的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2015-11-06
    • 2015-09-10
    • 2012-07-08
    相关资源
    最近更新 更多