【问题标题】:<could not resolve type> when debugging Swift 5.1 with LLDB in Ubuntu 18.04<无法解析类型> 在 Ubuntu 18.04 中使用 LLDB 调试 Swift 5.1
【发布时间】:2019-09-26 14:34:38
【问题描述】:

我正在尝试在 linux 中使用 lldb 调试 swift 代码,但没有成功。

当我尝试检查更复杂的结构变量时,我得到“”

我对旧版本进行了同样的尝试,得到了相同的结果,我想我缺少一些配置

我有来自 swift 文档的简单代码

struct Celsius {
    var temperatureInCelsius: Double
    init(fromFahrenheit fahrenheit: Double) {
        temperatureInCelsius = (fahrenheit - 32.0) / 1.8
    }
    init(fromKelvin kelvin: Double) {
        temperatureInCelsius = kelvin - 273.15
    }
}
let bpOfWater = Celsius(fromFahrenheit: 212.0)
let fpOfWater = Celsius(fromKelvin: 273.15)
print("\(bpOfWater)")
print("\(fpOfWater)")

使用 lldb

$ which lldb
/usr/share/swift/usr/bin/lldb
$ lldb ./swift/apptest/.build/debug/apptest
(lldb) target create "./swift/apptest/.build/debug/apptest"
Current executable set to './swift/apptest/.build/debug/apptest' (x86_64).
(lldb) b -f main.swift -l 13
Breakpoint 1: where = apptest`main + 504 at main.swift:13:7, address = 0x0000000000001078
(lldb) r
Process 8061 launched: '/home/ubuntu/swift/apptest/.build/debug/apptest' (x86_64)
Celsius(temperatureInCelsius: 100.0)
Process 8061 stopped
* thread #1, name = 'apptest', stop reason = breakpoint 1.1
    frame #0: 0x0000555555555078 apptest`main at main.swift:13:7
   10   let bpOfWater = Celsius(fromFahrenheit: 212.0)
   11   let fpOfWater = Celsius(fromKelvin: 273.15)
   12   print("\(bpOfWater)")
-> 13   print("\(fpOfWater)")
Target 0: (apptest) stopped.
(lldb) frame variable bpOfWater
bpOfWater = <could not resolve type>
(lldb) frame variable fpOfWater
fpOfWater = <could not resolve type>
(lldb) 

如您所见,我得到:无法解析类型

(lldb) frame variable bpOfWater
bpOfWater = <could not resolve type>
(lldb) frame variable fpOfWater
fpOfWater = <could not resolve type>
(lldb) 

String 或 Int 并非如此

那么,谁能看到我在这里做错了什么?

【问题讨论】:

    标签: swift ubuntu debugging lldb


    【解决方案1】:

    你的打印语句不会给你任何可读的东西。尝试打印出 bpOfWater.temperatureInCelsius

    【讨论】:

    • 没有帮助:(lldb)帧变量 bpOfWater.temperatureInCelsius - 错误:“temperatureInCelsius”不是“()bpOfWater”的成员
    • 您是否尝试过清理所有内容并重新编译?也可以尝试显式声明: let bpOfWater : Celsius = Celsius(....)
    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2021-11-02
    • 2017-04-23
    • 2012-11-19
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多