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

    人工智能芯片与自动驾驶
  • 相关阅读:
    0.嵌入式系统 Boot Loader 技术内幕
    JAVA_SE基础——25.面向对象练习
    JAVA_SE基础——24.面向对象的内存分析
    JAVA_SE基础——23.类的定义
    深入理解java的static关键字
    JAVA_SE基础——22.面向对象的概念
    JAVA_SE基础——21.二维数组的定义
    Java常用排序算法/程序员必须掌握的8大排序算法
    JAVA_SE基础——20.数组的常见操作
    JAVA_SE基础——19.数组的定义
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14189121.html
Copyright © 2020-2023  润新知