1、GDB和LLDB
GDB和LLDB都是调试器,其中LLDB比GDB的功能更加强大。在Mac上使用的是LLDB。
GDB:
UNIX及UNIX-like下的调试工具,是GNU项目的调试器部分,旨在与GNU编译器一起工作。
LLDB:
LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件,是LLVM项目的调试器部分,其创建是为了与LLVM编译器一起使用。
二者命令对照表:https://lldb.llvm.org/use/map.html
使用建议:在使用clang时使用LLDB,在与gcc配对使用时使用gdb,因为lldb基于llvm,而gdb是GNU调试器。
2、Clang
Clang是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端。它采用了LLVM作为其后端,由LLVM2.6开始,一起发布新版本。它的目标是提供一个GNU编译器套装(GCC)的替代品,支持了GNU编译器大多数的编译设置以及非官方语言的扩展。
这个项目是有苹果公司发起的,是LLVM编译器的工具集的前端,目的是输出代码对应的抽象语法树,并将代码编译成LLVM Bitecode。具体可以看wiki。