web-dev-qa-db-ja.com

GDB Vs LLDBデバッガー

GDBデバッガーとLLDBデバッガーの違いは何ですか?最近、Xcodeバージョンを4.2から4.3にアップグレードし、デバッガーをGDBからLLDBにアップグレードするための警告が表示され始めました。

50
Abhinav

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

しかしながら...

Developer.Apple.comのフォーラムをご覧ください。現時点では、LLDBの問題についてかなり不満があります(XCode 4.3.1)。 Appleの人々が確認した厄介な問題の1つは、ステップ実行中にivarを表示すると、間違った値が表示される可能性があることです。

43
infinitetape

1。定義の違いによる

まず、GDBとは何ですか?

「GDBはGNUソフトウェアシステムの標準デバッガです」
GNUデバッガーは、通常GDBと呼ばれ、実行可能ファイルとしてgdbという名前が付けられ、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。デバッガーコマンドの使用の違いによる

ほとんどのコマンドは同じです。

これは、これら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

これにより、コマンドの違いが明確に示され整理されます。

サイトにアクセスできなくなった場合に備えて、リンクされたサイトと以下のコマンドの主な違いを要約します。

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。個人的な意見による

LLDBは、デフォルトでプライマリデバッガーとしてXcode IDE 5から完全に統合されています。
その時から、LLDBの安定性、パフォーマンスの問題、バグに関する苦情の報告がありました。
ただし、LLDBを使用したLLVMプロジェクトは、世界の主要なオープンソースプロジェクトの1つとして、信じられないほど改善およびアップグレードされています。
だから、LLDBはGDBの位置を盗み、少なくともAppleの世界ではすでに主要なデフォルトデバッガであるため、少なくとも、LLDBをApple開発環境に使用すべきだと思います。
(2016年9月下旬、LLVMとLLDBを統合したXcode 8が正式にリリースされました。つまり、LLVM/LLDBがXcodeのデフォルトのツールチェーンになってからかなりの時間が経過しました。)
しかし、私たちはすべて、GDBが30年以上にわたって歴史的に強力に検証され、戦いで実証されたデバッガーであることを既に知っています。

だから、私は言うだろう...
clangの使用中にlldbを使用します。gdbはGNUデバッガーですが、lldbはllvmに基づいているため、gccコンパイラーを適切な組み合わせまたはペアとして使用しながらgdbを使用します。

あなたの役に立つことを願っています。

ありがとう。

17
boraseoksoon