【问题标题】:Finding value of variable while use breakpoint Swift使用断点Swift时查找变量的值
【发布时间】:2023-04-03 10:45:01
【问题描述】:

我有一个简单的测试:

func testAdd(){
        let result = calc.evaluate(op: "+", arg1: 2.0, arg2: 9.0)
        print("result - \(result)")
        XCTAssert(result == 11.0, "Calculator operation failed")
    }

它确实通过了,但我尝试在控制台中设置断点并检查值,但没有任何值,为什么?请看下面的截图:

当我右键单击“结果”(在左侧窗格中)并选择“结果”输出的打印描述是 - (Double) result = <variable not available>

但即使是 print 函数也确实打印了该值。为什么?

【问题讨论】:

  • 欢迎来到 Xcode 的世界

标签: swift xcode debugging


【解决方案1】:

你的“结果”变量是一个临时的局部中间变量。

如果代码是在发布版本中编译的(而不是在调试版本中),那么编译器可能已经优化了大多数中间变量,并以完全不同的顺序完成了相同的计算以获得相同的结果.因此,在生成的运行代码中没有具有该值的变量要打印。

如果您想查看变量值,请尝试在构建设置中切换到使用调试构建。或者将所需的变量值分配给在另一个 Swift 文件中实例化的全局变量(Swift 编译器不太可能对其进行优化)。

【讨论】:

  • 您的假设很有趣,但我运行的是测试,而不是调试模式下的应用程序。调试模式下的测试方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多