【发布时间】:2020-06-04 06:49:09
【问题描述】:
每当我在 swift 模式下运行 LLDB 表达式时,都会出现以下错误。
无法创建 Swift 临时上下文(无法加载 Swift stdlib) 无法创建 Swift 临时上下文(无法加载 Swift 标准库)堆栈转储: 0.程序参数:/Applications/Xcode.app/Contents/Developer/usr/bin/lldb [1] 77539 分段错误 lldb
我尝试导入什么并不重要。
~ ❯❯❯ lldb
(lldb) expression -l swift -- import AppKit
Cannot create Swift scratch context (couldn't load the Swift stdlib)Cannot create Swift scratch context (couldn't load the Swift stdlib)Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/usr/bin/lldb
[1] 6665 segmentation fault lldb
~ ❯❯❯ lldb ✘ 139
(lldb) expression -l swift -- import Foundation
Cannot create Swift scratch context (couldn't load the Swift stdlib)Cannot create Swift scratch context (couldn't load the Swift stdlib)Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/usr/bin/lldb
[1] 7122 segmentation fault lldb
~ ❯❯❯ lldb ✘ 139
(lldb) expression -l swift -- import UIKit
Cannot create Swift scratch context (couldn't load the Swift stdlib)Cannot create Swift scratch context (couldn't load the Swift stdlib)Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/usr/bin/lldb
[1] 7225 segmentation fault lldb
~ ❯❯❯ ✘ 139
有趣的是,在 Xcode 中使用 LLDB 时,同样的命令可以工作。
【问题讨论】:
-
请不要向我们展示代码图片。显示代码(作为文本)。复制和粘贴。使代码清晰可复制。谢谢。
-
注意到@matt 已删除图片。
-
你安装了多个 Xcode 吗?用于构建代码的 swift 编译器和调试它的 lldb 必须匹配。因此,例如,如果您安装了一个测试版,并且使用该测试版构建但使用另一个 lldb 进行了调试,则预计不会工作。
-
@JimIngham 只安装了一个 Xcode,最后,唯一的解决办法是在 Swift REPL 中启动 LLDB。如果从 CMD 行开始,快速模式导入将失败。
-
REPL 和“从命令行开始”之间的区别在于,REPL 实际上是 lldb 附加到使用 lldb 正在使用的相同工具链构建的程序上,而从命令行你是将您构建的程序交给 lldb。您构建的程序与调试它们的 lldb 不匹配,但我对您的设置了解不足,无法猜测可能是什么。