GDB与LLDB调试器

Abh*_*nav 51 debugging xcode cocoa-touch gdb lldb

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

小智 45

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

然而...

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

  • 那个错误就是为什么你会发现我暂时使用GDB :) (9认同)

bor*_*oon 17

1.通过定义的差异

首先,什么是GDB?

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

(来自维基百科的引用)

第二,什么是LLDB?

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

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

毫无疑问,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

这清楚地表明并组织了命令的不同.

如果该站点不再可访问,我总结了以下命令与链接站点的主要区别.

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

3.个人意见

LLDB默认情况下已从Xcode IDE 5完全集成为主调试器.
从那时起,就LLDB的稳定性,性能问题和错误提出了一些投诉报告.
然而,LLLD与LLDB项目一直在进行令人难以置信的改进和升级,直到世界上的核心开源项目之一.
因此,我认为,至少LLDB应该用于Apple开发环境,因为LLDB偷走了GDB的位置,并且至少在Apple世界中已经是主要的默认调试器.
(2016年9月下旬,集成LLVM和LLDB的Xcode 8正式发布,这意味着自从LLVM/LLDB成为Xcode的默认工具链以来已经过去了很多时间.)
但是,我们都已经知道GDB历史上和经过30多年的强有力验证和经过实战验证的调试器,非常棒.

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

我希望它对你有所帮助.

谢谢.