如果将表达式添加到Xcode调试器的左侧面板,则可以从其弹出菜单中选择一个标记为Edit Summary Format...
的选项。
这将弹出Set Summary Format for type XXX
弹出框,其中XXX
是表达式的类型。
在Xcode帮助的View variables in the debug area
页的View variables
部分中,我找到了与该功能最接近的文档:
编辑变量的摘要格式...在弹出窗口中,输入有效的LLDB表达式,然后单击“完成”。此表达式将覆盖默认格式器,并用于为该类型的所有变量创建摘要。
好,但是弹出框的占位符文本提到$VAR
,这似乎是以摘要格式输入的有效内容-但lldb不接受!因此,我怀疑这部分文档实际上并不准确。
此功能的其余文档在哪里?
答案 0 :(得分:3)
当Xcode使用gdb作为其调试器时,以及gdb对数据格式化程序的任何内置支持之前,都发明了这种摘要格式。它只有Xcode才了解,并且主要出于遗留原因进行维护。
Xcode不再支持gdb,而改用lldb。 lldb拥有自己的数据格式化系统:
https://lldb.llvm.org/varformats.html
它的优点是它将应用于Xcode的“变量”视图,使用lldb的SB API编写的任何命令以及所有显示值的lldb命令行命令(例如expr
,frame var
)。
您可以按照〜/ .lldbinit文件中上面的链接中的说明定义格式化程序,它们将同时应用于Xcode调试会话和命令行lldb会话(应该有理由使用命令行lldb。)为了便于维护,我创建了一个.lldb目录,将格式化程序放在诸如formatters.lldb之类的文件中,然后在我的.lldbinit中执行:
command source ~/.lldb/formatters.lldb
这样,当我处理它们时,我可以独立地获取格式化程序中的资源,而不必担心.lldbinit还在做什么。
答案 1 :(得分:0)
根据我的经验,Xcode 11不支持“〜/ .lldbinit”文件。并且“编辑摘要”的格式非常随机。例如,如果您的结构具有“小时”,“分钟”,“第二” Int字段,则以下“编辑摘要”无效:
%hour%:%minute%:%second%
%hour%%minute%%secondsecond%
但这是:
%hour%':%minute%':%second%
但是您得到以下结果:“ 5':35':25”