GDB与LLDB调试器

时间:2012-03-14 18:27:05

标签: xcode debugging cocoa-touch gdb lldb

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

2 个答案:

答案 0 :(得分:42)

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

...然而

您可能想要访问developer.apple.com上的论坛。关于LLDB目前的问题(在XCode 4.3.1中)存在相当大的隆隆声。苹果公司已经证实,一个令人讨厌的问题是,在踩踏时查看ivars可能会显示错误的值。

答案 1 :(得分:16)

<强> 1。按定义差异

首先,什么是GDB?

  

&#34; GDB是GNU软件系统的标准调试器&#34;   GNU调试器通常称为GDB,并将gdb命名为可执行文件,是GNU操作系统的标准调试器。但是,它的使用并不严格限于GNU操作系统;它是一个可移植的调试器,可在许多类Unix系统上运行,适用于许多编程语言,包括Ada,C,C ++,Objective-C,Free Pascal,Fortran,Java 1和部分其他编程语言。{{3} }   

(来自维基百科的引用)

第二,什么是LLDB?

  

&#34; LLDB是一个构建为一组可重用组件的调试器,它高度利用较大LLVM项目中的现有库,例如Clang表达式解析器和LLVM反汇编程序。
LLDB是Apple的“从头开始”替代GDB,与LLVM编译器密切协作开发,为您提供最先进的调试,具有流量控制和数据检查方面的广泛功能。从Xcode 5开始,所有新的和预先存在的开发项目都会自动重新配置为使用LLDB。标准LLDB安装为您提供了一组广泛的命令,旨在与熟悉的GDB命令兼容。除了使用标准配置外,您还可以轻松自定义LLDB以满足您的需求。   

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

毫无疑问,GDB和LLDB都是优秀的调试器 GDB是GNU项目的调试器部分,用于沿GNU编译器工作 LLDB是为使用LLVM编译器而创建的LLVM项目的调试器部分。

<强> 2。根据调试器命令的使用差异

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

这是下面的好链接,用于比较这两个调试器命令的差异。
让我链接下面的详细信息: 2

https://developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.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应该用于Apple开发环境,因为LLDB已经抢走了GDB的位置,并且至少在Apple世界中已经是主要的默认调试器。
(2016年9月下旬,Xcode 8集成了LLVM LLDB正式发布,这意味着由于LLVM / LLDB是Xcode的默认工具链,因此已经过去了很多时间。)
但是,我们都已经知道GDB已经历了30年的历史和强有力的验证和经过实战验证的调试器,这真是太棒了。

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

我希望它对你有所帮助。

感谢。