Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GDB Vs LLDB debuggers

What is the difference between GDB & LLDB debuggers? I recently upgraded my Xcode version from 4.2 to 4.3 & started getting warning to upgrade my debugger from GDB to LLDB.

like image 412
Abhinav Avatar asked Mar 14 '12 18:03

Abhinav


People also ask

Is LLDB better than GDB?

Both GDB and LLDB are of course excellent debuggers without doubt. GDB is debugger part of the GNU project created to work along the GNU compiler. LLDB is debugger part of the LLVM project created to work along LLVM compiler. The majority of the commands are the same.

Is GDB the best debugger?

GNU Debugger(GDB) The GNU Debugger, aka GDB, is one of the most powerful Linux debuggers available to modern programmers. It is a robust tool with an extensive set of features. GDB has built-in support for many popular programming languages, including C, C++, Fortran, and Java.

Does GDB work with Clang?

Note that the gdb debugger is designed to work with a different compiler (g++). However, the lldb debugger, which is designed to work with clang++, does not work on an Ubuntu VirtualBox installation (see here for the bug tracker about this issue). Thus, we are going to use gdb instead of lldb.

Does Visual Studio use GDB?

6 weeks ago, Microsoft open-sourced their GDB/LLDB front-end for Visual Studio 2015. It means that we can now debug gcc-built programs with the Visual Studio debugguer interface.


2 Answers

LLDB is part of the LLVM suite of tools that Apple is moving to, including Clang. There are tons of improved features, including improved performance. There's a quick intro for GDB users here: http://lldb.llvm.org/tutorial.html

However...

You might want to take a trip over to the forums at developer.apple.com. There's a fair bit of rumbling about issues with LLDB at the moment (in XCode 4.3.1). One nasty issue, which people from Apple have confirmed, is that viewing ivars while stepping may show you the wrong values.

like image 118
infinitetape Avatar answered Sep 26 '22 23:09

infinitetape


1. By Difference of Definition

First, What is GDB?

"GDB is the standard debugger for the GNU software system"
The GNU Debugger, usually called just GDB and named gdb as an executable file, is the standard debugger for the GNU operating system. However, its use is not strictly limited to the GNU operating system; it is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Java1 and partially others.2

(quotation from wikipedia)

Second, What is LLDB?

"LLDB is a debugger built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.
LLDB is Apple’s “from the ground up” replacement for GDB, developed in close coordination with the LLVM compilers to bring you state-of-the-art debugging with extensive capabilities in flow control and data inspection. Starting with Xcode 5, all new and preexisting development projects are automatically reconfigured to use LLDB. The standard LLDB installation provides you with an extensive set of commands designed to be compatible with familiar GDB commands. In addition to using the standard configuration, you can easily customize LLDB to suit your needs.

(quotation from Apple official site)
/* I tried to find actual / practical datas to prove the statement : LLDB is already much faster than GDB when debugging large programs.) However, I could not find it. if there is someone having this related data, please edit this article. */

Both GDB and LLDB are of course excellent debuggers without doubt.
GDB is debugger part of the GNU project created to work along the GNU compiler.
LLDB is debugger part of the LLVM project created to work along LLVM compiler.

2. By Difference of Debugger Command usage

The majority of the commands are the same.
However, lldb and gdb, two different debuggers are developed by different set of developers and thus have a little bit different commands.

This is good link below for comparing difference of these two debugger commands.
let me link the detail below : 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

This clearly indicates and organizes the difference of commands.

In case the site is not accessible anymore, I summary the major difference of commands below from the linked site.

Execution command difference between GDB and LLDBBreak-Point command difference between GDB and LLDBExamining variable command difference between GDB and LLDBExamining thread state command difference between GDB and LLDB

3. By Personal Opinion

LLDB has been fully integrated from Xcode IDE 5 by default as primary debugger.
From that time, there has been some complaint report about LLDB stability, performance issues and bugs.
However, LLVM with LLDB project has been being incredibly improved and upgraded so far as the one of the core open-source project in the world.
So, I think, at least, LLDB should be used for Apple development environment since LLDB stole the position of GDB and is already primary default debugger at least in Apple world.
(In late September, 2016, Xcode 8 integrating LLVM and LLDB was officially released, meaning quite a lot of time has been passed since LLVM/LLDB is default tool-chain for Xcode.)
But, We all already know GDB has been historically and strongly verified and battle-proven debugger over 30 years, which is awesome.

So, I would say…
I would like to use lldb while using clang, use gdb while using gcc compiler as the good combination or pair because lldb is based on llvm, whereas gdb is a GNU debugger.

I wish it could be helpful for you.

Thanks.

like image 29
boraseoksoon Avatar answered Sep 24 '22 23:09

boraseoksoon