美文网首页
LLDB ③ 插件

LLDB ③ 插件

作者: _涼城 | 来源:发表于2022-03-28 09:37 被阅读0次

    Python Scripting

        LLDB 有一个强大的脚本接口,可以通过 Python 访问。Python 可以通过(交互式)脚本解释器在 LLDB 中使用,也可以作为可以从 Python 解释器导入的 Python 模块使用。在 LLDB 调试工具中, Python 脚本可以帮助完成许多任务,包括检查程序数据、迭代容器以及确定断点是否应该停止执行或继续执行。
        LLDB 提供了公共Pythong SB API文档给开发者用于自定义 LLDB 插件工。并且提供了一些教程Python-reference以便开发者入门。

    LLDB Python API

        LLDB 提供了 lldb Package,包含用于 Python 绑定的公共 API,下面列举了一些重要的类。

    描述
    SBTarget 表示在调试器下运行的目标程序
    SBProcess 表示与目标程序相关的进程
    SBThread 代表一个执行线程 SBProcess包含 SBThreads
    SBFrame 表示与线程关联的堆栈帧之一 SBThread 包含 SBFrame(s)
    SBSymbolContext 存储各种调试器相关信息的容器
    SBValue 表示变量、寄存器或表达式的值
    SBModule 表示可执行映像及其关联的对象和符号文件 SBTarget包含 SBM 模块
    SBBreakpoint 表示一个逻辑断点及其相关设置 SBTarget包含 SBBreakpoints
    SBSymbol 表示可能与堆栈帧相关联的符号
    SBCompileUnit 表示一个编译单元,或编译后的源文件
    SBFunction 表示一个通用函数,可以内联也可以不内联
    SBBlock 表示一个词法块 SBFunction包含 SBBlock
    SBLineEntry 指定与连续指令范围和源文件位置的关联 SBCompileUnit包含 SBLineEntry

    配置文件

        LLDB 从 .lldbinit 文件中读取设置、别名和命令等内容。

        首先,lldb将尝试读取名为 ~/.lldbinit-xxx 的应用程序特定的 init 文件, ~/.lldbinit-lldb 用于命令行 lldb 和 ~/.lldbinit-Xcode 用于 Xcode。如果没有特定于应用程序的 init 文件,lldb 将查找 ~/.lldbinit

        其次,它将在当前工作目录中查找 .lldbinit 文件。出于安全原因,LLDB 将打印警告并且默认情况下不获取此文件。可以通过更改 target.load-cwd-lldbinit 设置来更改此行为。

    facebook/chisel

        Chisel 是 facebook 提供的 LLDB 的用于调试 iOS应用程序的命令集合。

    安装

    1. Chisel 可以通过 brew 安装

      brew install chisel
      
    2. 使用 .lldbinit 文件配置导入

       command script import /usr/local/opt/chisel/libexec/fbchisellldb.py
      

    DerekSelander/LLDB

        DerekSelander/LLDB 是德里克·塞兰德 写的别名/正则表达式和 Python 脚本的集合。并且他写了一本书名为 Advanced Apple Debugging and Reverse Engineering 可以更好的了解 LLDB。

    安装

    1. 克隆仓库 https://github.com/DerekSelander/LLDB.git
    2. 使用 .lldbinit 文件配置导入

    推荐链接

    Dancing in the Debugger — A Waltz with LLDB (2014)

    WWDC2019 - LLDB:Beyond "po"

    WWDC2018 - Advanced Debugging with Xcode and LLDB

    相关文章

      网友评论

          本文标题:LLDB ③ 插件

          本文链接:https://www.haomeiwen.com/subject/zjtpjrtx.html