LLDB po 抱怨错误:表达式解析失败:错误:无法实现自我类型

Jul*_*les 5 debugging po lldb

这是一个使用 cocoapods 的 iOS 应用程序。Xcode 14 和 Xcode 13.4.1 行为相同。我正在使用静态库。

使用 Xcode 14 新的 lldb cmd swift-healthcheck,打印

“SwiftASTContextForExpressions::LoadOneModule() -- 缺少通过 SwiftDWARFImporterDelegate“导入”的“短视频”的 Swift 模块或 Clang 模块。提示:使用 -add_ast_path 向链接器注册 Swift 模块。”

如何使用 -add_ast_path 向链接器注册 Swift 模块。

参考:WWDC 2022 Video Debug 使用 LLDB 进行 Swift 调试

dav*_*ung 0

如果您正在调试依赖子项目或框架内的 Swift 类,则该类必须有一个@objc注解,否则,如果您尝试从该类内的断点检查变量,您将收到此错误。

坏的:

public class Logger: NSObject {
    public static func debug(_ message: String, file:NSString = #file, function:NSString = #function, line:Int = #line) {
        log(message: message, file: file, function: function, line: line)
    }
Run Code Online (Sandbox Code Playgroud)
(lldb) po message
error: Couldn't realize type of self
Run Code Online (Sandbox Code Playgroud)

好的:

@objc public class Logger: NSObject {
    public static func debug(_ message: String, file:NSString = #file, function:NSString = #function, line:Int = #line) {
        log(message: message, file: file, function: function, line: line)
    }
Run Code Online (Sandbox Code Playgroud)
(lldb) po message
"This is the line I am logging"
Run Code Online (Sandbox Code Playgroud)

  • 如果它是一个 swiftUI 视图类怎么办?我无法应用@objc (4认同)