1

A 不久前发布一个关于如何将自定义 LLDB 类型摘要添加到 Xcode 中的问题。我发现我们可以通过加载 Python 脚本来做到这一点。

但是,我想知道是否有办法加载多个 Python 文件?我与许多不同的项目一起工作,所以我想要 1 个用于我所有项目中的通用类型的摘要文件,以及 1 个用于项目特定类型的摘要文件。


~/MyGenericSummaries.py

import lldb

def __lldb_init_module(debugger, dictionary):
    debugger.HandleCommand('type summary add --summary-string "these are words" MyGenericClass');

~/MyProjectSummaries.py

import lldb

def __lldb_init_module(debugger, dictionary):
    debugger.HandleCommand('type summary add --summary-string "these are more words" MyProjectClass');

~/.lldbinit

command script import ~/MyGenericSummaries.py
command script import ~/MyProjectSummaries.py

这永远不会加载 MyProjectSummaries.py 的类型摘要——LLDB 只是告诉我

错误:模块导入失败:模块已导入

是否可以将通用摘要和项目摘要保存在单独的文件中?这真的很有帮助,因为我有一些在不同项目之间发生冲突的类型名称,所以我宁愿将它们分开。

非常感谢 :)

4

2 回答 2

3

好的,我明白了……有点 Python 魔法:


~/MyGenericSummaries.py

import lldb

def doLoad(debugger, dictionary):
    debugger.HandleCommand('type summary add --summary-string "these are words" MyGenericClass');

def __lldb_init_module(debugger, dictionary):
    doLoad(debugger, dictionary);

~/MyProjectSummaries.py

import lldb
from MyGenericSummaries import doLoad

def __lldb_init_module(debugger, dictionary):
    doLoad(debugger, dictionary);
    debugger.HandleCommand('type summary add --summary-string "these are more words" MyProjectClass');

~/.lldbinit

command script import ~/MyProjectSummaries.py

.lldbinit唯一的缺点是每次切换项目时我都需要调整并重新启动 Xcode,但这是我可以忍受的。

于 2013-06-21T11:24:50.567 回答
2

我不清楚为什么原始代码不起作用。从你引用的内容来看,我希望这能奏效。

你当然可以command script import在你的文件中包含多个 Python~/.lldbinit文件——我一直都这样做。从错误消息中,看起来您已经有command script import ~/MyProjectSummaries.py一个~/.lldbinit。小心寻找~/.lldbinit-Xcode在 Xcode 运行时(或者~/.lldbinit-lldb如果正在使用命令行 lldb)也是来源的。一般形式~/.lldbinit-DRIVER_NAME适用于正在使用的任何 lldb。如果您只想在以下情况下启用某些设置,则此功能很有用例如,lldb 库正在 Xcode 中使用。)

您可能希望将您的type summary条目放在每个项目组中。如果您这样做type summary list,您将看到内置摘要已分组为 、 、 等类别libcxxVectorTypes可以CoreGraphics使用 启用或禁用这些摘要组type category enable|disable|list|delete

命令行 lldb 还将.lldbinit在运行它的当前工作目录中读取 a - 尽管这对 Xcode 案例没有帮助。对于您正在做的事情,您确实需要一个特定于项目的 lldbinit 文件。如果您在~/.lldbinit文件中添加了这些类型摘要,则特定于项目的 lldbinit 可能只是启用/禁用此项目的正确类型摘要。但是现在 Xcode 中没有这样的功能。

于 2013-06-22T06:37:22.280 回答