64

GDB デバッガーと LLDB デバッガーの違いは何ですか? 最近、Xcode のバージョンを 4.2 から 4.3 にアップグレードしたところ、デバッガーを GDB から LLDB にアップグレードするよう警告が出るようになりました。

4

2 に答える 2

56

LLDB は、Clang を含む、Apple が移行しているツールの LLVM スイートの一部です。パフォーマンスの向上など、多くの改善された機能があります。GDB ユーザー向けの簡単な紹介があります: http://lldb.llvm.org/tutorial.html

でも...

developer.apple.com のフォーラムにアクセスしてみてください。現時点では、LLDB の問題についてかなりのうわさがあります (XCode 4.3.1)。Apple 関係者が確認した厄介な問題の 1 つは、足踏み中に ivar を表示すると、間違った値が表示される可能性があることです。

于 2012-03-14T20:06:36.153 に答える
36

1. 定義の違いによる

まず、GDBとは?

「GDB は GNU ソフトウェア システムの標準デバッガです」
通常 GDB と呼ばれ、実行可能ファイルとして gdb と呼ばれる GNU Debugger は、GNU オペレーティング システムの標準デバッガです。ただし、その使用は GNU オペレーティング システムに厳密に限定されているわけではありません。多くの Unix ライクなシステムで動作し、Ada、C、C++、Objective-C、Free Pascal、Fortran、Java 1などの多くのプログラミング言語で動作するポータブル デバッガです。2

(ウィキペディアからの引用)

第二に、LLDB とは何ですか?

「LLDB は、Clang 式パーサーや LLVM 逆アセンブラーなど、大規模な 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 つの異なるデバッガーは、異なる開発者によって開発されているため、コマンドが少し異なります。

これは、これら 2 つのデバッガー コマンドの違いを比較するための以下のリンクです。
以下の詳細をリンクさせてください: 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 の安定性、パフォーマンスの問題、およびバグに関する苦情の報告がいくつかありました。
ただし、LLDB プロジェクトを使用した LLVM は、世界のコア オープンソース プロジェクトの 1 つとして、信じられないほど改善され、アップグレードされています。
したがって、少なくともAppleの開発環境にはLLDBを使用する必要があると思います.LLDBはGDBの地位を奪い、少なくともAppleの世界ではすでに主要なデフォルトデバッガです.
(2016 年 9 月下旬、LLVM と LLDB を統合した Xcode 8 が正式にリリースされました。これは、LLVM/LLDB が Xcode のデフォルトのツールチェーンになってからかなりの時間が経過したことを意味します。)
しかし、GDB が 30 年以上にわたって歴史的かつ強力に検証され、実戦で実証済みのデバッガーであることは、すでに誰もが知っています。これは素晴らしいことです。

したがって、私はこう言います...<br> lldb は GNU デバッガーであるのに対し、lldb は llvm に基づいているため、clang を使用しているときに lldb を使用し、gcc コンパイラーを使用しているときに gdb を適切な組み合わせまたはペアとして使用したいと考えています。

お役に立てれば幸いです。

ありがとう。

于 2016-09-27T06:28:10.830 に答える