2012-03-14 93 views
39

GDB & LLDB调试器有什么区别?我最近将我的Xcode版本从4.2升级到4.3 &开始收到警告,将我的调试器从GDB升级到LLDB。GDB Vs LLDB调试器

+0

一个是拖我更改主要区别在于,GDB在打印大阵了很多重复的内容很聪明,而只是LLDB吹灭垂直滚动条。 – 2012-04-25 12:12:52

+1

我喜欢LLDB的是它的语法更加结构化。 GDB更自由一些。 – 2013-04-29 23:48:45

回答

39

LLDB是Apple转移到的LLVM工具套件的一部分,包括Clang。有很多改进的功能,包括改进的性能。有一个快速的介绍了GDB的用户在这里:http://lldb.llvm.org/tutorial.html

但是......

你可能要考虑到论坛一趟在developer.apple.com。目前在LLDB方面存在一些问题(在XCode 4.3.1中)。苹果公司的一位人士证实,一个令人讨厌的问题是,在步行时观看ivars可能会给你带来错误的价值。

+8

这个错误就是为什么你会发现我暂时使用GDB :) – 2012-03-14 21:24:53

+0

谢谢你提到这个问题!我对LLDB调试器向我展示的内容感到很生气。这是完全不可能的。 GDB确实工作得更好。 – 2012-07-10 15:07:56

+0

你好。已经有一年了。 LLDB仍然不太好? – Voldemort 2013-06-30 08:40:34

9

1.定义的差异

首先,什么是GDB?

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

(报价来自维基百科)

二,什么是LLDB?

“LLDB是建成为一组可重用的组件的调试器,它在更大的LLVM项目高度利用现有的库,如锵表达式解析器和LLVM反汇编。
LLDB是苹果的‘从地上爬起来’更新换代对于GDB,与LLVM编译器紧密协作开发,为您带来最先进的调试功能,并具有丰富的流量控制和数据检测功能。从Xcode 5开始,所有新的和已有的开发项目都会自动重新配置为使用LLDB。标准的LLDB安装为您提供了一套广泛的命令,旨在与熟悉的GDB命令兼容。除了使用标准配置外,您还可以轻松地定制LLDB以满足您的需求。

(引自Apple官方网站)
/*我试图找到实际/实际的数据来证明声明:在调试大型程序时,LLDB已经比GDB快得多。) 但是,我找不到它。如果有人有这些相关数据,请编辑这篇文章。 */

GDB和LLDB无疑都是优秀的调试器。
GDB是为GNU编译器创建的GNU项目的一部分调试器。
LLDB是创建用于LLVM编译器的LLVM项目的调试器的一部分。

2。通过调试器命令使用

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

这是比较好的链接,用于比较这两个调试器命令的差异。
让我联系下面的细节: 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

这清楚地表明并组织命令的区别。

如果网站不能访问了,我总结从链接网站下面的命令的主要区别。

Execution command difference between GDB and LLDB Break-Point command difference between GDB and LLDB Examining variable command difference between GDB and LLDB Examining thread state command difference between GDB and LLDB

3.由个人意见

LLDB已经完全从Xcode的IDE 5默认为主要调试器集成在一起。
从那时起,有一些关于LLDB稳定性,性能问题和错误的投诉报告。
但是,LLVM与LLDB项目一直在不断改进和升级,直至成为全球核心开源项目之一。
因此,我认为,至少LLDB应该用于苹果开发环境,因为LLDB窃取了GDB的地位,并且至少在Apple世界中已经是主要的默认调试器。
(9月下旬,2016年,Xcode中8整合LLVM和LLDB正式发布,这意味着相当多的时间,因为LLVM/LLDB已经通过为默认工具链的Xcode的。)
但是,我们都已经知道GDB有已经过了30年的历史和强大的验证和战斗验证调试器,这非常棒。

所以,我想说...
我想同时使用铛,使用gdb的同时使用gcc编译器的良好组合或对,因为LLDB是基于LLVM,而GDB是GNU调试器使用LLDB。

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

感谢。