我已经编写了一个LLDB数据格式化程序,但是我无法将我的日志输出显示在Xcode lldb控制台中。 data formatter examples创建记录器并像这样写入:
def __init__(self, valobj, dict):
logger = lldb.formatters.Logger.Logger()
...
logger >> "Providing synthetic children for a vector named " + str(valobj.GetName())
我这样做了,我使用命令
启用了lldb格式化程序日志log enable -g lldb formatters
当我打印一个变量(例如frame var x
)时,我确实看到了很多调试输出,但不是我的。
答案 0 :(得分:2)
我更详细地了解了by looking at the Logger source。
要启用日志记录,您必须将lldb.formatters.Logger._lldb_formatters_debug_level
设置为大于0的值。从源本身引用:
默认情况下,lldb.formatters.Logger
会打印到标准输出。如果您使用Xcode进行调试,则不会看到lldb的stdout流。如果要登录文件,请将lldb.formatters.Logger._lldb_formatters_debug_filename
设置为所需的文件名。注意:你必须确保文件是可写的,你不能将它设置为需要shell扩展的路径(例如〜/ logfile.log不起作用,Python不扩展〜)。
总之,我的__lldb_init_module
看起来像这样:
def __lldb_init_module(debugger, internal_dict):
lldb.formatters.Logger._lldb_formatters_debug_level = 2
lldb.formatters.Logger._lldb_formatters_debug_filename = "/Users/Shared/lldb.py.log"
# followed by debugger.HandleCommand(...)
答案 1 :(得分:0)
遗憾的是,这是一个已知问题
由于LLDB没有为自己的日志记录机制公开SB API,因此lldb.formatters.Logger使用与“log enable”命令分开的日志记录逻辑
如果你要做的就是在编写时调试数据格式化程序,你可以在格式化程序体内使用“print”语句