【问题标题】:How do you watch or evaluate an expression in xcode like visual studio's immediate window?你如何观察或评估 xcode 中的表达式,如 Visual Studio 即时窗口?
【发布时间】:2011-08-05 11:30:16
【问题描述】:

在 MS Visual Studio 中,我们只需右键单击添加手表。

如何在 Xcode 中做到这一点?

【问题讨论】:

  • 问题是我不知道变量什么时候改变。如果我知道我会使用常规断点。

标签: objective-c xcode debugging


【解决方案1】:

在Debug区使用po命令

在代码的相关区域设置断点,然后当程序停在断点处时,在Debug Area的Console中输入命令。 相关命令是 po (print object) 后跟要计算的表达式。

如果 Debug 窗口在 XCode 中不可见,您可以通过顶部菜单显示它:

'View' -> 'Debug Area' -> 'Activate Console' (XCode v8.x)

示例

要计算像 var1/var2 这样的表达式,其中 var1var2 都是双精度数,请在控制台中输入以下内容:

po var1/var2

控制台将返回如下内容:

(double) $2 = 3.085 [no Objective-C description available]

显示对象属性

您还可以在该断点处返回代码中当前使用的对象的特定属性:

po [bankInfo city]

它会返回如下内容:

(id) $4 = 0x000069e8 Testville

请注意,尽管控制台似乎不喜欢点表示法,并且在适用时更喜欢方括号。例如,这会为我返回一个错误:

po bankInfo.city

我希望这是您一直在寻找的。​​p>

【讨论】:

  • @gideon 您应该将此标记为已接受的答案(对于像 op 和我这样的 Visual Studio 人员)
【解决方案2】:

Gabe 的答案几乎就在那里,但缺少一个关键细节:选择 Debugger Output 。默认情况下,底部选项设置为目标输出,因此po 命令不会显示任何内容。

这是我正在调试的教程中的三明治应用

作为一个 xcode 新手并来自 MS Visual Studio 背景,我想要的正是 OP 正在寻找的东西。在阅读 Gabe 的答案时,我选择了 Debugger Output 并得到了我想要的。

【讨论】:

    【解决方案3】:

    我的前辈告诉我使用 NSLog(@variable)..........

    【讨论】:

    • 我们可以在某个即时窗口上这样做吗?
    • 我们可以像在 vb.net 中那样在即时窗口上这样做吗?
    • OP 要求在遇到断点时查看表达式和变量。我确切地知道他在说什么,因为我使用 Visual Studio 已经很长时间了,并且有一个即时窗口可以让你像在 REPL 控制台中一样进行编码,并在上下文中使用当前堆栈帧。因此,您可以根据断点的位置在其中查看变量值等。记录调用虽然有用并不是很好,但您正在更改代码,您需要记住在完成后删除它们。
    【解决方案4】:

    在循环和函数的开头设置一些断点。一旦您单击编辑器窗口中的断点(类似于箭头)按钮,“构建和调试工具”将被启用。然后,您可以通过单击调试器图标转到调试器。在调试器窗口的右侧,变量将可见,选择 self->then the instance variable ur going to set watch point.右键单击它并选择“watch variable”。将设置触发点,您将收到通知改变时变量的值。

    【讨论】:

    • 那行得通吗。否则您可以查看“Objective C for dummies”一书中的调试页面以获得更好的理解。他们已经清楚地解释了如何设置调试。
    • 点击断点会使断点变得苍白。不知道这是什么意思。
    • 我只是想看表情。我已经能够观察局部变量了。
    • 是的,我也在寻找一种方法来观察表达式,而不是简单的变量。
    【解决方案5】:

    据我了解,您希望查看变量何时发生变化。为此创建一个断点并右键单击它并选择Edit Breakpoint。将出现一个窗口:

    确保您选择了正确的操作,例如Debugger CommandLog Message,并勾选Automatically continue after evaluating 选项。因此,您会执行某种操作(例如日志记录、声音等)并且不会在断点处停止。

    【讨论】:

      【解决方案6】:

      如果您想知道变量何时发生变化,请使用“watch”:

      1. 在相关类的某处设置断点;
      2. 在调试器中运行应用程序,让它在你的断点处停止;和
      3. 转到底部“调试”面板左侧的“变量”视图,右键单击相关属性并选择“观察”。

      例如,在这里,我已经在viewDidLoad 的断点处停止,并为total 添加了一个“监视”:

      (这是 Swift,但 Objective-C 也是如此。)

      现在,如果我“继续”执行 (),Xcode 将在此属性更改时暂停,并且我可以看到 total 的哪一行代码正在更改、到达该点的堆栈跟踪等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-16
        • 2021-02-27
        • 1970-01-01
        • 2011-08-12
        相关资源
        最近更新 更多