LLDB ③ 插件

2022-03-28  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读