【问题标题】:How to print equivalent of #line #file #function in LLDB using Swift?如何使用 Swift 在 LLDB 中打印等效的 #line #file #function?
【发布时间】:2020-07-08 00:11:11
【问题描述】:

在源代码中,如果我这样做:

print("\(#file) \(#line) \(#function)")

我得到如下输出:

MyFile.swift 31 doFoo()

但是,从 LLDB 中的断点开始,如果我执行类似操作:

(lldb) po "\(#file) \(#function) \(#line)"

我明白了:

"<EXPR> $__lldb_expr(_:) 6"

有没有办法像前者一样从后者获得输出?我知道你可以这样做:

(lldb) frame info
frame #0: 0x0000000102d92c46 MyApp `closure #2 in Client.fetchCart($0=(error_instance = 0x0000600000810be0 -> 0x0000000108e88cc0 (void *)0x0000000108e88ce8: __SwiftNativeNSError)) at Client+Cart.swift:21:23

...但是输出非常混乱。有没有办法把它清理成文件、行和函数?

【问题讨论】:

    标签: swift lldb


    【解决方案1】:

    您可以set a custom format 显示框架信息。对于你想要的,你可以这样做:

    settings set frame-format "${line.file.basename} ${line.number} ${function.name-without-args}\n"
    

    然后尝试frame info。你会得到类似的东西:

    AppDelegate.swift 11 AppDelegate.application(_:didFinishLaunchingWithOptions:)
    

    您可以通过关注this answer 来永久设置此设置。

    【讨论】:

    • 太棒了!这就是我一直在寻找的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2023-03-15
    • 1970-01-01
    • 2014-11-21
    • 2013-11-13
    • 2013-01-12
    相关资源
    最近更新 更多