【问题标题】:How do I load multiple lldb type summaries Python files?如何加载多个 lldb 类型摘要 Python 文件?
【发布时间】:2013-06-18 10:28:20
【问题描述】:

不久前发布的a question 是关于如何将自定义 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 只是告诉我

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

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

非常感谢:)

【问题讨论】:

    标签: python xcode lldb


    【解决方案1】:

    好的,我明白了...用一点 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,但这是我可以忍受的。

    【讨论】:

    • 找到了更多关于Handle Command的文档
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-13
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多