2012-03-14 91 views
39

GDB & LLDB調試器有什麼區別?我最近將我的Xcode版本從4.2升級到4.3 &開始收到警告,將我的調試器從GDB升級到LLDB。GDB Vs LLDB調試器

+0

一個是拖我更改主要區別在於,GDB在打印大陣了很多重複的內容很聰明,而只是LLDB吹滅垂直滾動條。 – 2012-04-25 12:12:52

+1

我喜歡LLDB的是它的語法更加結構化。 GDB更自由一些。 – 2013-04-29 23:48:45

回答

39

LLDB是Apple轉移到的LLVM工具套件的一部分,包括Clang。有很多改進的功能,包括改進的性能。有一個快速的介紹了GDB的用戶在這裏:http://lldb.llvm.org/tutorial.html

但是......

你可能要考慮到論壇一趟在developer.apple.com。目前在LLDB方面存在一些問題(在XCode 4.3.1中)。蘋果公司的一位人士證實,一個令人討厭的問題是,在步行時觀看ivars可能會給你帶來錯誤的價值。

+8

這個錯誤就是爲什麼你會發現我暫時使用GDB :) – 2012-03-14 21:24:53

+0

謝謝你提到這個問題!我對LLDB調試器向我展示的內容感到很生氣。這是完全不可能的。 GDB確實工作得更好。 – 2012-07-10 15:07:56

+0

你好。已經有一年了。 LLDB仍然不太好? – Voldemort 2013-06-30 08:40:34

9

1.定義的差異

首先,什麼是GDB?

「GDB是GNU的軟件系統標準的調試器」
GNU調試器,通常被稱爲只是GDB和GDB命名爲一個可執行文件,是爲GNU操作系統的標準調試器。但是,它的使用並不僅限於GNU操作系統,它是一個可移植的調試器,可運行在許多類Unix系統上,可用於許多編程語言,包括Ada,C,C++,Objective-C,Free Pascal,Fortran,Java 1以及其他部分。 2

(報價來自維基百科)

二,什麼是LLDB?

「LLDB是建成爲一組可重用的組件的調試器,它在更大的LLVM項目高度利用現有的庫,如鏘表達式解析器和LLVM反彙編。
LLDB是蘋果的‘從地上爬起來’更新換代對於GDB,與LLVM編譯器緊密協作開發,爲您帶來最先進的調試功能,並具有豐富的流量控制和數據檢測功能。從Xcode 5開始,所有新的和已有的開發項目都會自動重新配置爲使用LLDB。標準的LLDB安裝爲您提供了一套廣泛的命令,旨在與熟悉的GDB命令兼容。除了使用標準配置外,您還可以輕鬆地定製LLDB以滿足您的需求。

(引自Apple官方網站)
/*我試圖找到實際/實際的數據來證明聲明:在調試大型程序時,LLDB已經比GDB快得多。) 但是,我找不到它。如果有人有這些相關數據,請編輯這篇文章。 */

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

這清楚地表明並組織命令的區別。

如果網站不能訪問了,我總結從鏈接網站下面的命令的主要區別。

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應該用於蘋果開發環境,因爲LLDB竊取了GDB的地位,並且至少在Apple世界中已經是主要的默認調試器。
(9月下旬,2016年,Xcode中8整合LLVM和LLDB正式發佈,這意味着相當多的時間,因爲LLVM/LLDB已經通過爲默認工具鏈的Xcode的。)
但是,我們都已經知道GDB有已經過了30年的歷史和強大的驗證和戰鬥驗證調試器,這非常棒。

所以,我想說...
我想同時使用鐺,使用gdb的同時使用gcc編譯器的良好組合或對,因爲LLDB是基於LLVM,而GDB是GNU調試器使用LLDB。

我希望它可以對你有所幫助。

感謝。