GDB与...之间有什么区别? LLDB调试器?我最近将我的Xcode版本从4.2升级到4.3&开始收到警告,将我的调试器从GDB升级到LLDB。
答案 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
这清楚地表明并组织了命令的不同。
如果该网站不再可访问,我总结了下面命令与链接网站的主要区别。
第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调试器。
我希望它对你有所帮助。
感谢。