LLDB调试器

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的有趣领域,请参见“项目”页面

 

posted @ 2020-12-25 15:18  吴建明wujianming  阅读(234)  评论(0编辑  收藏  举报