繁体   English   中英

LLDB'线程返回'命令在Swift函数中发出错误

[英]LLDB 'thread return' command emits error in a Swift function

我正在阅读调试器中Dancing - 一篇有LLDB的华尔兹文章。 我正在尝试使用Swift 2.2以及Swift 3.0的thread return命令。

我的代码非常简单:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let resust = test()
        print(resust)
    }

    func test() -> Bool {
        return true
    }
}

我在test()函数的开头添加了一个断点,并thread return false动作。 但是,在命令+ R之后,我的程序按预期在断点处停止,但出现以下错误:

“错误:从线程1的第0帧返回错误:我们目前只支持设置简单整数和浮点数返回类型。”

这是一个屏幕截图:

codesnapshot1

然后我在Objective-C代码中尝试了相同的操作; 一切顺利。

这些都是已知的错误。 Swift(Int,Bool等)中的值类型都是复杂的对象,我们还没有教过lldb如何覆盖它们的返回值。 错误处理也会使这个棘手。

一般来说,强制返回是不安全的 - 使用ARC更是如此,对Swift来说更是如此,因为你可能会使引用计数失去平衡 - 不仅仅是局部因素,而且可能是传入的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM