GDB VS LLDBdebugging器

GDB和LLDBdebugging器有什么区别? 我最近将我的Xcode版本从4.2升级到了4.3,并开始接到警告,要求将我的debugging器从GDB升级到LLDB。

LLDB是苹果正在转向的LLVM工具套件的一部分,包括Clang。 有很多改进的function,包括改进的性能。 这里有一个GDB用户的简短介绍: http : //lldb.llvm.org/tutorial.html

然而…

您可能需要访问developer.apple.com上的论坛。 目前在LLDB方面存在一些问题(在XCode 4.3.1中)。 一个来自苹果公司的人已经证实了一个令人讨厌的问题,那就是在跨步的时候查看ivars可能会给你带来错误的价值。

1.定义的差异

一,什么是GDB?

“GDB是GNU软件系统的标准debugging器”
GNUdebugging器通常被称为GDB,并将gdb命名为可执行文件,是GNU操作系统的标准debugging器。 但是,它的使用并不仅限于GNU操作系统, 它是一个可移植的debugging器,运行在许多类Unix系统上,可用于许多编程语言,包括Ada,C,C ++,Objective-C,Free Pascal,Fortran,Java 1以及其他部分。 2

(来自维基百科的引用)

第二,什么是LLDB?

“LLDB是一个作为一组可重用组件构build的debugging器,它可以高度利用更大的LLVM项目中的现有库,如Clangexpression式parsing器和LLVM反汇编器。
LLDB是苹果公司从GDB开始的“从头开始”的替代产品,与LLVM编译器密切合作开发,为您带来最先进的debuggingfunction,并具有丰富的stream量控制和数据检测function。 从Xcode 5开始,所有新的和已有的开发项目都会自动重新configuration为使用LLDB。 标准的LLDB安装为您提供了一系列与熟悉的GDB命令兼容的命令。 除了使用标准configuration,您还可以轻松定制LLDB以满足您的需求。

(苹果官方网站报价)
/ *我试图find实际/实际的数据来certificate这一点:在debugging大型程序时,LLDB已经比GDB快得多了。)但是,我找不到它。 如果有人有这个相关的数据,请编辑这篇文章。 * /

GDB和LLDB毫无疑问当然是优秀的debugging器。
GDB是为GNU编译器而创build的GNU项目的一部分。
LLDB是创build用于LLVM编译器的LLVM项目的debugging器的一部分。

2.通过debugging器命令使用的区别

大部分命令是相同的。
但是,lldb和gdb,两个不同的debugging器是由不同的开发人员开发的,因此有一些不同的命令。

这是比较这两个debugging器命令差异的好链接。
让我链接下面的细节: https : //developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html

http://lldb.llvm.org/lldb-gdb.html

这清楚地表明和组织了命令的差异。

如果网站无法访问,我总结下面的链接网站的命令的主要区别。

GDB和LLDB之间的执行命令不同GDB和LLDB的断点命令区别检查GDB和LLDB之间的变量命令差异检查GDB和LLDB之间的线程状态命令差异

3.通过个人意见

默认情况下,LLDB已经从Xcode IDE 5完全集成为主debugging器。
从那时起,有关于LLDB稳定性,性能问题和bug的一些投诉报告。
但是,LLVM和LLDB项目一直在不可思议地完善和升级,成为世界核心开源项目之一。
所以,我认为,至lessLLDB应该用于苹果开发环境,因为LLDB偷走了GDB的地位,至less在苹果世界已经是主要的默认debugging器了。
(2016年9月下旬,正式发布了集成LLVM和LLDB的Xcode 8,这意味着LLVM / LLDB是Xcode的默认工具链以来已经过了很多时间。
但是,我们都知道GDB已经有30多年的历史和强大的validation和经过validation的debugging器了,真是太棒了。

所以,我会说…
我想在使用clang时使用lldb,使用gdb而使用gcc编译器作为良好的组合或配对,因为lldb基于llvm,而gdb是GNUdebugging器。

我希望这可以对你有所帮助。

谢谢。