debugging GDB VS LLDB调试器

u0sqgete  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(125)

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

bhmjp9jg

bhmjp9jg1#

LLDB是苹果正在转向的LLVM工具套件的一部分,包括Clang。有大量的改进功能,包括改进的性能。这里有一个针对GDB用户的快速介绍:http://lldb.llvm.org/tutorial.html
不过……
您可能想去developer.apple.com上的论坛。目前有很多关于LLDB的问题(在XCode 4.3.1中)。一个令人讨厌的问题是,苹果公司的人已经证实,在步进时查看ivars可能会显示错误的值。

yv5phkfx

yv5phkfx2#

1.按定义差异

首先,什么是广发银行
GDB,GNU工程调试器,允许你看到另一个程序在执行时“内部”发生了什么--或者另一个程序在崩溃时正在做什么。
GDB homepage
GNU Debugger(GDB)是一个可移植的调试器,可以在许多类Unix系统上运行,并适用于许多编程语言,包括Ada,Assembly,C,C++,D,Fortran,Go,Objective-C,OpenCL C,Modula-2,Pascal,Rust和部分其他语言。
Wikipedia
二、什么是LLDB
LLDB是下一代高性能调试器。它是作为一组可重用组件构建的,这些组件高度利用了大型LLVM项目中的现有库,例如Clang表达式解析器和LLVM反汇编器。
LLDB是macOS上Xcode的默认调试器,支持在桌面和iOS设备以及模拟器上调试C、Objective-C和C++。
LLDB homepage
LLDB是Apple对GDB的“从头开始”替代,与LLVM编译器密切合作开发,为您带来最先进的调试,具有广泛的流控制和数据检查功能。从Xcode 5开始,所有新的和预先存在的开发项目都自动重新配置为使用LLDB。标准的LLDB安装为您提供了一组广泛的命令,旨在与熟悉的GDB命令兼容。除了使用标准配置外,您还可以轻松自定义LLDB以满足您的需求。
Apple documentation archive
毫无疑问,GDBLLDB 都是优秀的调试器。GDBGNU 项目的调试器部分,用于沿着 GNU 编译器一起工作。LLDBLLVM 项目的调试器部分,用于沿着 LLVM 编译器一起工作。

2.按Debugger命令用法差异

大多数命令都是相同的。
然而,LLDBGDB 是由不同的开发人员开发的两个不同的调试器,因此具有稍微不同的命令。
以下两个列表清楚地表明了命令的差异:

链接研究中心列出的主要差异总结如下所示。

3.个人观点
  • LLDB* 已完全集成,默认情况下启动 Xcode IDE 5 作为主调试器。

从那时起,有一些关于 LLDB 稳定性,性能问题和错误的投诉报告。然而,LLVM with LLDB 项目已经得到了令人难以置信的改进和升级,迄今为止,它是世界上最核心的开源项目之一。
所以,我认为,至少,LLDB 应该用于Apple开发环境,因为 LLDB 抢了 GDB 的位置,并且至少在Apple世界已经是主要的默认调试器。
(In 2016年9月下旬,集成LLVM和LLDB的Xcode 8正式发布,这意味着LLVM/LLDB作为Xcode的默认工具链已经过去了相当长的时间。
但是,GDB 在历史上一直是一个经过严格验证和战斗验证的调试器,超过30年,这是令人敬畏的。
因此,我会在使用 Clang 时使用 LLDB,在使用 GCC 编译器时使用 GDB 作为良好的组合或配对,因为 LLDB 基于 LLVM,而 GDBGNU 调试器。

相关问题