使用断点Swift时查找变量的值

问题描述 投票:2回答:1

我有简单的测试:

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

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

enter image description here

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

但即使打印功能确实打印了这个值。为什么?

swift xcode debugging
1个回答
0
投票

您的“result”变量是临时的本地中间变量。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.