当前位置: 首页 > 工具软件 > LLDB > 使用案例 >

LLDB调试器

彭风华
2023-12-01

LLDB调试器
这是LLDB文档!
LLDB是下一代高性能调试器。它是作为一组可重用的组件构建的,这些组件可充分利用大型LLVM Project中的现有库,例如Clang表达式解析器和LLVM反汇编程序。
LLDB是macOS上Xcode中的默认调试器,并支持在台式机,iOS设备和模拟器上调试C,Objective-C和C ++。
LLDB项目中的所有代码都可以在 “带有LLVM例外的Apache 2.0许可”下获得。
使用LLDB
有关LLDB命令语言的介绍,请转到LLDB文档。对于已经熟悉GDB的用户,有一个备忘录,其中列出了常见任务及其在GDB到LLDB命令映射中的LLDB等效项。
关于如何使用Python编写LLDB脚本的信息也有很多,Python Reference是一个很好的起点。
编译器集成的好处
LLDB将调试信息转换为Clang类型,以便它可以利用Clang编译器基础结构。允许LLDB在表达式中支持最新的C,C ++,Objective-C和Objective-C ++语言功能以及运行时runtime,无需重新实现任何此功能。在函数调用表达式,反汇编指令和提取指令详细信息等等时,还利用编译器来处理所有ABI详细信息。
主要好处包括:
• 对C,C ++,Objective-C的最新语言支持
• 可以声明局部变量和类型的多行表达式
• 在支持时将JIT用于表达式
• 无法使用JIT时评估表达式中间表示(IR)
可重用性
LLDB调试器API在共享库中作为面向C ++对象的接口公开。lldb命令行工具链接到并使用此公共API。在macOS上,共享库作为名为LLDB.framework的框架开放,而Unix系统将其公开为lldb.so。然后,还通过Python脚本绑定公开了整个API,该绑定允许在LLDB嵌入式脚本解释器中以及在将lldb.py模块加载到标准python脚本文件中的任何python脚本中使用该API。有关如何以及在LLDB API中使用Python的方式的更多详细信息,请参见Python参考页面。
共享LLDB API不仅使LLDB可以用于调试,而且还可以用于符号化,反汇编,对象和符号文件自省等等。
平台支持
已知LLDB可在以下平台上工作,但欢迎移植到新平台:
• 针对i386,x86_64和AArch64的macOS调试
• 在i386,x86_64和AArch64上调试iOS,tvOS和watchOS模拟器
• 在ARM和AArch64上进行iOS,tvOS和watchOS设备调试
• 针对i386,x86_64和PPC64le的Linux用户空间调试
• 针对i386和x86_64的FreeBSD用户空间调试
• i386的Windows用户空间调试(
)对Windows的支持正在积极开发中。预计基本功能会起作用,功能会迅速改善。
参与进来
使用git检查LLVM源代码树,并在lldb 子目录中找到源代码:

git clone https://github.com/llvm/llvm-project.git
注意,LLDB通常使用CMake和Ninja从主干建立。此外,还可以构建:
• 在MacOS上使用生成的Xcode项目
• 在Linux和FreeBSD上使用Clang和libstdc ++ / libc ++
• 在带有GCC / Clang和libstdc ++ / libc ++的NetBSD上
• 在Windows上具有针对VS 2017或更高版本的生成项目
有关构建说明,请参见LLDB构建页面。
有关LLDB的讨论应转到lldb-dev邮件列表。提交消息会自动发送到lldb-commits邮件列表,这也是补丁提交的首选邮件列表。
如果寻找一些有助于lldb的有趣领域,请参见“项目”页面。

 类似资料: