【问题标题】:In XCode 6 how can you set a watchpoint without stopping execution?在 XCode 6 中,如何在不停止执行的情况下设置观察点?
【发布时间】:2015-04-19 08:23:32
【问题描述】:

您可以按照以下步骤在 XCode 中轻松设置观察点(顺便说一句,如果有更简单的方法,我想知道...):
- 运行您的程序
- 在使用变量的代码中设置断点
- 到达断点时,右键单击变量并选择“Watch "nameOfTheVariable"'
- 继续执行。

唯一的问题是每次变量值更改时执行都会停止。我希望 XCode 继续执行而不停止,即仅在控制台输出中显示值更改。
此功能似乎在命令行模式下可用,虽然我最初想避免它,但我使用该模式发布了一个解决方案(见下文),因为它似乎是做我想做的唯一方法,即在显示变量的同时继续执行变化。

【问题讨论】:

  • 我不知道该怎么做,但也许您可以在 KVO 更改时将其用于 nslog? developer.apple.com/library/ios/documentation/Cocoa/Conceptual/…在你想监控的东西上设置一个观察者,然后使用输出方法来nslog它的当前状态
  • 是的,但这不是我想要的。另外,这可能仅适用于 iOS。我还可以在修改变量的任何地方添加 DBG 行...

标签: xcode watch watchpoint


【解决方案1】:

观察点就像一个断点,当正在观察的变量的值被更新时,它就会被击中。 要设置它,请按照以下步骤操作:

1.设置断点,以便调试器中的变量视图显示您要查看的变量。 2.右键单击变量并选择Watch“变量名”。 3.每当变量的值发生变化时,这将停止执行。

观察点现在将开始显示在调试导航器中。 为了将其删除,只需将其拖向编辑器即可。

PS : 这只是一个更智能的实现 didset 的版本,用于变量及其内部的设置和断点。

【讨论】:

    【解决方案2】:

    看来实现这一点的唯一方法是使用 LLDB 命令行。因此,对于像我一样从未在这里使用过它的人来说,这是一种逐步(实际上相当简单)的方式来使用它并在不停止执行的情况下观察变量:

    1. 在 Xcode 中设置一个断点(单击源代码行的左侧),其中使用了您要监视的变量(在范围内),然后运行您的代码直到它到达断点。
    2. 在控制台视图(右下角显示控制台的小窗口)中,您应该会看到 (lldb) 提示。您可以在此处输入以下命令:
      w s v stuff (或 watchpoint set variable stuff) 其中 stuff 是您要查看的变量的名称
      w c a (或 watchpoint command add)进入脚本模式,在“>”之后每行输入一个命令,如下所示
      p stuff (或 print stuff)显示新的东西变量值
      c (或 continue)继续执行
      DONE 完成这个小脚本(注意大写字符!)

    就是这样!您可以删除断点并继续执行。从那时起,每次更新变量“stuff”时都会在控制台中显示消息,而不会停止代码的执行(当然它可能会减慢一点,但这通常并不重要)。

    【讨论】:

    • 在这种情况下,如果您使用的是长版本的 lldb 命令,我个人会觉得它更好。那么它会更容易理解,这实际上是做什么的。
    • 好吧,我想我会显示最短的命令,这将是您使用的命令,但我同意它有助于记住它们以显示长版本。所以我编辑了我的答案...... :)
    • 如果我们希望它打印像p self.m_someObj.m_someString 这样的内容,您能否添加一个示例来说明我们将输入的内容?它似乎对我不起作用,出现了一些错误。我也尝试了 -> 而不是 . 无济于事。
    • @Cyber​​Mew 对于子字段应该是相同的: w s v self.m_someObj.m_someString 然后 p self.m_someObj.m_someString 你得到什么样的错误?它们可能是由于您尝试观察的变量不再在范围内。
    猜你喜欢
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多