デバッガーは、コンピューター プログラムを分析するために使用されるソフトウェアのグループです。コードの問題を見つけることができるため、ソフトウェア エンジニアリングの観点から非常に重要です。 Linux デバッガーには、メモリ デバッガー、ソース デバッガー、プロファイラーなど、いくつかの種類があります。これらのツールの一般的な使用法には、バグの発見、コードベースの最適化、ランタイム パラメーターの制御などが含まれます。本日、私たちの編集者は、Linux ベースの開発者とソフトウェア エンジニア向けの最高のデバッガー 20 を概説する役立つリソースをコンパイルしました。以下を参照して、プログラミングの武器庫に最適なツールキットを見つけてください。
最高の Linux デバッガー
私たちの選択には、Linux c++ デバッガー、逆アセンブラー、PHP、および JavaScript デバッガーが含まれます。さまざまな種類のデバッガーを見つけることができますが、ほとんどの開発者にとって役立つものはごくわずかです。幸いなことに、このガイドを完了すると、ニーズに最適なデバッガーを特定できるようになります。ですから、読み続けて、以下のプログラムをよく見てください。
1. GDB
GDB、別名 GNU Debugger は、間違いなくこれまでに構築された最高の Linux デバッガーです。これは、現代のオープンソース運動の先駆者である Richard Stallman によって開発され、今日まで最高のデバッガ ユーティリティとして機能しています。 GDB はその移植性で知られており、Windows と並んでほぼすべての Unix ベースのシステムで実行できます。 GDB を使用して、ブレークポイントの設定、コード ブロックのステップ実行、動的プロパティの検査を簡単に行うことができます。さらに、Linux コード エディターなどの標準的な開発ツールとの相性も抜群です。
GNU デバッガーの機能
- 最高の Linux C++ デバッガーの 1 つであり、開発者は不要なバグにパッチを適用しながらプログラムを最適化できます。
- GNU Debugger は、x86、AMD64、ARM、MIPS のほか、Arduino などのほとんどの組み込みプラットフォームなど、さまざまなハードウェアで動作します。
- リモート デバッグのサポートが組み込まれているため、開発者は別のシステムで実行されているプログラムをリモート クライアントからデバッグできます。
- 公式の GUI はありませんが、GDB は、Emacs、CodeBlocks、Qt Creator などのいくつかの最新のフロントエンドとのシームレスな統合を提供します。
2. DDD
DDD またはデータ表示デバッガーは、複雑な最新のソフトウェアをデバッグするためのもう 1 つの優れた選択肢です。実際には、それ自体はデバッガーではなく、GDB、XDB、DBX などのいくつかの強力なデバッガーのフロントエンドです。これは、開発者が実行中のプログラムを監視できる魅力的なツールであり、マシンレベルのデバッグ、ハイパーテキスト ナビゲーション、リモート ホストのデバッグなどの機能を提供します。 DDD は GNU 公式プロジェクトでもあります。したがって、他のデバッガーで直面する一般的な問題に遭遇することなく使用できます。
DDD の機能
- DDD は、C、C++、Java、Fortran、Perl、Python、Modula、Ada、および Linux Bash スクリプトで記述されたプログラムのデバッグに使用できます。
- インタラクティブなグラフィカル ユーザー インターフェースは非常に堅牢で、グラフやチャートなどのグラフィカル データを表示できます。
- 膨大な量の役立つリソースのおかげで、開発者はこの Linux デバッガーに非常に簡単に適応できます。
- DDD は、編集、履歴の確認、補完機能を備えた優れた CLI インターフェースも提供します
3.対話型逆アセンブラー
対話型逆アセンブラーは、提供される機能の数により、プロの開発者にとって最高の Linux デバッガーの 1 つです。このマルチプラットフォーム デバッガーにより、さまざまなコンポーネントがさまざまなインフラストラクチャで実行される大規模なシステムの保守が容易になります。このデバッガーの主なセールス ポイントは、標準の ELF 実行可能ファイルなどのコンパイル済みバイナリ ファイルからアセンブリ コードを生成できることです。ただし、IDA は GDB や DDD のようなフリー ソフトウェアではありません。開発者は複数の料金プランを提供しており、ウェブサイトで確認できます。
インタラクティブ逆アセンブラーの機能
- IDA は、Intel 8086 ファミリー、ARM、DEC Alpha &PDP-11、JVM、SPARC、PowerPC など、さまざまなコンピューティング ハードウェアをサポートしています。
- ELF、Mach-O、COFF、NE、MZ、COM、さらには未加工のバイナリ ファイルなど、いくつかの実行形式を逆アセンブルできます。
- IDA pro には、リモート ターゲット デバッグ、コード グラフ作成、flirt (高速ライブラリ識別および認識テクノロジ) のサポートが事前に組み込まれています。
- このデバッガのプラグインベースのアーキテクチャにより、非常に短時間で拡張できます。
4.ギドラ
Ghidra は、NSA の研究者によって書かれた非常に強力で機能豊富な逆アセンブラーです。オープンソースのリリース以来、非常に人気があり、魅力的なリバース エンジニアリング タスクを容易にします。私たちの編集者は、これが有料のIDA Proの適切な代替手段であることを発見しました. Ghidra はマルチプラットフォームであり、現在も活発に開発されています。そのため、プロジェクトに貢献し、複雑なプログラムのデバッグを学ぶこともできます。さらに、NSA ラボで作成されたデバッガーから世界クラスの機能を取得することが保証されています。
ギドラの特徴
- Ghidra には、アセンブリ、逆アセンブリ、逆コンパイル、スクリプト作成、グラフ作成機能など、驚くべき一連の機能が備わっています。
- 開発者は、すべての主要なプラットフォームで Ghidra を実行し、インタラクティブに、またはヘッドレス オートメーションを介して使用できます。
- このリバース エンジニアリング ツールの API ベースのアーキテクチャにより、開発者はカスタム Ghidra プラグインを非常に簡単に構築できます。
- Ghidra は広範囲にカスタマイズ可能で、Java、Python、または Jython 実装で記述されたサードパーティの拡張機能をサポートしています。
5.ネミヴェール
Nemiver は、C および C++ プログラミング言語用のスタンドアロン デバッガーです。これは、開発者がコードベースを実用的かつ簡単に最適化できる魅力的なプロジェクトです。そのため、多くの開発者にとって、Linux c++ デバッガーの一般的な選択肢となっています。私たちの編集者は、このツールの GUI インターフェイスを非常に気に入っており、C++ プログラマーを始めたばかりの人に強く勧めました。 Nemiver は GNOME 環境用に構築されており、GNU デバッガーまたは GDB のバックエンドを提供します。
Nemiver の特徴
- Nemiver は非常に拡張性が高く、開発者はプラグインと動的に読み込まれるモジュールを使用してソフトウェアをカスタマイズできます。
- ブレークポイントの作成、コードのステップ実行、動的プロパティや条件の検査など、すべての基本的なデバッグ機能を提供します。
- Nemiver は C++ で記述されており、必要なメモリが非常に少ないため、プログラマーは非常に高速なデバッグ エクスペリエンスを実現できます。
- 自動逆アセンブリ命令の定義に使用できる統合逆アセンブラを備えており、混合ソースと一緒にアセンブリ モードをサポートします。
6.ヴァルグラインド
Valgrind は、Linux やその他の Unix ベースのシステムで動作する多目的デバッガであり、メモリ リークの検出、ソース デバッグ、および最適化のためのいくつかの機能を提供します。 C とアセンブリの組み合わせで記述されているため、リソース効率が非常に高くなります。 Valgrind 開発チームは積極的に新機能に取り組んでおり、優れた問題追跡サービスを提供しています。さらに、経験豊富な開発者は、Valgrind のモジュラーおよびオープンソース設計のおかげで、非常に強力な動的分析ツールを Valgrind の上に構築できます。
Valgrind の機能
- Valgrind は、標準の POSIX Pthreads API の誤用、ロック順序の問題、およびデータ競合を非常に効果的に検出できます。
- 基本的には、JIT コンパイルを利用し、Memcheck、Cachegrind、Massif などのいくつかのモジュラー ツールをホストする Java 仮想マシン (JVM) です。
- Memcheck ユーティリティは、初期化されていないメモリ アドレスの使用、オーバーフロー、malloc の誤用、または同様の動的割り当て方法を検出します。
- Cachegrind は、従来の L1、D1、L2 キャッシュの詳細なシミュレーションを提供する有能なキャッシュ プロファイラです。
7. PurifyPlus
PurifyPlus は、多くの理由により、現代の開発者にとって最高のエンタープライズ Linux デバッガーの 1 つです。まず、オーバーフロー、リーク、ヒープの誤用などの動的メモリ エラーを検出するための優れた機能を提供します。これは、メモリ割り当ての検証を可能にし、オペレーティング システム コールに関連する問題を検出できるマルチプラットフォーム ソフトウェアです。さらに、PurifyPlus を使用すると、開発者は致命的ではない多くのエラーを見つけることができます。通常、致命的なエラーのみを検出するために使用されるため、従来の Linux C++ デバッガーとは対照的です。
PurifyPlus の機能
- PurifyPlus は、ポインティング エラーの場所や破損したメモリのサイズなど、いくつかの高度なメモリ デバッグ機能をサポートしています。
- 開発者は PurifyPlus を簡単に利用してメモリ使用を最適化し、デバッグ プロセスを高速化できます。
- PurifyPlus は、プログラムの潜在的なボトルネックを明らかにし、ソフトウェア速度の改善をシームレスに支援します。
- ソースへのアクセスを必要とせずに、サードパーティ ライブラリの統合をサポートしています。
8. BASHDB
Linux やその他の Unix 系システムのシェルは、ユーザーが洗練されたスクリプト言語を使用してマシンを制御できるため、非常に人気があります。 BASHDB は、Bash を使用して作成されたスクリプト用の強力なソースレベル デバッガーです。私たちの編集者は、そのシンプルでありながら実用的な使用例のために、このツールを非常に気に入っています.開発者はこれを使用して、ブレークポイントを作成し、エラーをトレースし、パフォーマンスを削減してボトルネックを取り除くことができます。そのため、Linux の bash スクリプトを頻繁に使用している場合は、忘れずにチェックしてください。
BASHDB の機能
- BASHDB はリソース効率が非常に高いため、リソースに制約のあるリモート サーバーのデバッグに適しています。
- このツールのオープンソース GNU GPL ライセンスにより、開発者は必要に応じてソフトウェアを変更または拡張できます。
- 開発者が数分で立ち上げて実行するのに役立つ優れたドキュメントが付属しています。
- BASHDB を使用すると、開発者は実行時にコード内を変更できるため、バグ修正の効果を確認できます。
9. Bugzilla
Bugzilla は、ソフトウェア製品のバグを追跡するために集中的に使用される、現代の問題追跡ソフトウェアです。バグ自体を追跡するのではなく、バグの解決を監視するように構築されているため、従来の Linux デバッガーとは異なります。多くの専門家が Bugzilla を使用して、ソフトウェアを最新の状態に維持し、将来の脆弱性にパッチを当てています。 Bugzilla は Mozilla プロジェクトのために開発され、大きな成功を収めました。全体として、JIRA や Lighthouse などの有料製品の優れた代替手段です。
Bugzilla の機能
- Bugzilla には堅牢でカスタマイズ可能なワークフローが付属しており、Unicode、カスタム フィールド、全文検索をサポートしています。
- プロジェクト開発者が競合の警告を編集できるようにし、LDAP ベースの認証をサポートします。
- 開発者は、メール、コマンドライン、GUI、堅牢な REST API などの複数のインターフェースを使用して制御できます。
- Bugzilla は、Git、Mercurial、Bazaar、Subversion、CVS など、多くのバージョン管理プラットフォームとの統合をサポートしています。
10.トータルビュー
TotalView は、複雑なプログラムを分析するために構築された、洗練された高性能デバッガです。これは、大規模なマルチスレッド プログラムを処理するのに適したツールであり、GPU クラスターを分析することもできます。 TotalView は独自のソリューションであり、Nvidia などの業界リーダーによって承認されています。 C、C++、Fortran、および Python で記述された Linux アプリケーションとシームレスに統合されます。実際、これは、ビデオ ゲームや同様のリソース集約型アプリケーションの開発者にとって最高の Linux C++ デバッガーの 1 つです。したがって、エンタープライズ デバッガーを探している場合は、このソフトウェアを一瞥してみてください。
TotalView の機能
- TotalView を使用すると、開発者は単一のセッションでホストとデバイスのコードをデバッグでき、Linux の GPU スレッドを完全に可視化できます。
- 複雑な検証方法と検証済みの計算を使用して、メモリ リーク、競合状態、デッドロックなどを検出できます。
- TotalView は、多くの従来の Linux デバッガーよりも正確に多言語プログラムをデバッグできます。
- 逆接続機能により、開発者は複数のコンピューティング ノードとクラスタを効果的にデバッグできます。
11.トレース
strace は、Linux アプリケーションの診断とデバッグに使用されるもう 1 つの強力な分析ツールです。これは、プロセスを監視し、プロセスとシステム コール間の相互作用を操作するために使用できる優れたユーザー空間ソリューションを提供します。 Cプログラミング言語で書かれているので、パフォーマンスは問題になりません。さらに、strace は活発に開発されており、新しい機能が頻繁に公開されています。また、ファイル記述子のパス トレースとパス デコードもサポートしています。したがって、軽量でありながら本格的なデバッガーを探している場合は、試してみてください。
strace の特徴
- strace を使用すると、開発者はプロセスと Linux カーネル間のすべてのシステム コールを監視して、潜在的なコーディングの落とし穴を明らかにできます。
- 開発者は、パスのリストとともにシステム コールのフィルタを簡単に指定して、トレースと実行プロパティの分析を行うことができます。
- プログラマは、スタック トレースの出力、エラー コードの変更、実行フローに基づくシグナルの注入を行うことができます。
- strace はオープンソースであるため、開発者は必要に応じてソフトウェアを拡張できます。
12. LLDB
LLDB は、間違いなく最高の Linux デバッガーの 1 つであり、手に入れることができます。これは、コンパイラとソフトウェア開発テクノロジの堅牢なコレクションを提供する LLVM プロジェクトの一部です。 LLDB デバッガーは、C、C++、および Objective C で記述されたプログラムを処理できる高性能アナライザーです。これは、macOS の Xcode の既定のデバッガー コンポーネントです。 LLDB は、サポートされている場合は式にジャスト イン タイム (JIT) 手法を利用しようとし、利用できない場合は中間表現に戻します。
LLDB の特徴
- SWIG ベースのスクリプト ブリッジにより、開発者は Python を使用してこのデバッガの公開 API にアクセスし、管理できます。
- この Linux デバッガーのプラグインベースのアーキテクチャにより、日常のデバッグ ワークフローを超えて簡単に拡張できます。
- LLDB では、魅力的なデバッグ サーバー コンポーネントを使用して、リモート システムでプログラムをデバッグできます。
- このデバッグ ツールキットには、プロジェクトのキックスタートに役立つ広範なドキュメントが付属しています。
13.電気柵
Electric Fence は、C プログラミング言語用の便利なメモリ デバッガです。 malloc や free などのメソッドによって引き起こされる動的メモリ割り当ての問題をチェックできます。 Electric Fence は、環境の仮想メモリを使用してこれらのエラーを検出し、スタックベースのバッファ オーバーフローを検出することに非常に成功しています。 GDB のような本格的な Linux デバッガーと組み合わせた場合に最適に機能します。開発者は、プログラムを Electric Fence の動的ライブラリにリンクするだけで、メモリ エラーが発生するたびにプログラムを検査できます。
電気柵の特徴
- 多くの C デバッガーとは異なり、Electric Fence を使用すると、開発者はメモリ エラーの正確な場所を見つけることができます。
- 動的に定義されたバッファの境界をプログラムがオーバーランするたびに、セグメンテーション違反が発生します。
- Electric Fence では、動的ライブラリが C プログラムにリンクされているため、プログラムのサイズが大きくなることがよくあります。
- ほとんどの Linux ディストリビューションで利用でき、Ubuntu と Fedora 用の既製のパッケージを提供します。
14. Xdebug
Xdebug は、PHP プログラマー向けの非常に強力なデバッグ ユーティリティです。これは、シームレスなデバッグとプロファイリングのサポートを提供する拡張機能です。スタック トレース、関数呼び出しの記録、変数呼び出しの詳細など、多数のエラー検出機能を提供します。さらに、開発者はオープンソースのコードベースにより、このデバッガーの機能を簡単に拡張できます。ソフトウェアは積極的に維持され、新しい機能が随時リリースされます。したがって、有能なデバッガーを探している PHP 開発者は、Xdebug をウィッシュリストに入れておきます。
Xdebug の機能
- Xdebug には堅牢な組み込みプロファイラーが付属しており、PHPUnit テスト フレームワークのコード カバレッジを提供します。
- 警告、エラー、通知、例外のスタック トレースと、関数の完全なパラメータ表示を提供します。
- Xdebug は、メモリ割り当てをチェックするためのいくつかの機能を実装し、終わりのない再帰に対する保護を提供します。
- DBGp プロトコルを使用して、デバッガ エンジンと Linux 用の PHP IDE 間の通信を維持します。
15. KDbg
KDbg プロジェクトは、GNU デバッガー用のシンプルで直感的な GUI フロントエンドを提供します。プログラマーは、このツールを使用して、ブレークポイントの作成、条件の設定、コードのステップ実行、および動的な値の検査を簡単に行うことができます。私たちの編集者は、これがプログラマーを始めるための理想的なソリューションであることを発見しました.ただし、KDbg は、リソースの使用量で悪名高い K デスクトップ環境または KDE に依存しています。そのため、リソースに制約のある古いマシンを使用している場合は、最適な選択ではない可能性があります。ただし、従来の Linux デバッガーについての知識がほとんどない初心者にとっては、依然として最良の選択です。
KDbg の特徴
- KDbg を使用すると、コア ダンプのデバッグが非常に簡単になり、開発者は実行中のプロセスをアタッチできます。
- next、set、step、clear、until などの一般的なデバッグ メソッドの直感的なキーバインドを提供します。
- このクロスプラットフォーム デバッガーは非常に高速ですが、古いレガシー PC では遅れる場合があります。
- KDbg には優れたドキュメント サポートが付属しており、初心者でも簡単に操作できます。
16. dbx
dbx は、Linux および BSD システム用の古いものですが、非常に有能なソースレベルのデバッガーです。 C、++、Fortran、Java、Pascal など、いくつかのプログラミング言語で書かれたプログラムのデバッグに使用できます。 dbx を使用すると、デバッガーは、変数や式の操作などの多くの標準機能と並行して、ソース コードまたはマシン命令を一度に 1 行ずつステップ実行できます。最初はカリフォルニア大学バークレー校で開発され、それ以来、すべての主要なオペレーティング システムに採用されています。
dbx の機能
- ソースコード、オブジェクト ファイル、マシン命令、コア ダンプなどの調査に使用できます。
- dbx は、過去の世代で最も広く使用されている Linux C++ コンパイラの 1 つであり、多くの最新の代替手段に影響を与えてきました。
- シンボリック変数を使用して実行可能ファイルのエラーを検出し、堅牢な MVS ダンプを提供します。
- dbx は、サブコマンドの膨大なリストと、新しいプログラマー向けの優れた直感的な GUI インターフェイスを公開しています。
17. JSwat
JSwat は、Java プラットフォーム デバッガー アーキテクチャ (JPDA) の上に構築されたシンプルだが生産的な Java デバッガーです。条件付きブレークポイントの作成、スレッドの監視、システム呼び出しなどの機能を含む堅牢な機能セットにより、Java 開発者にとって優れたツールキットです。さらに、オープンソース ソフトウェアであるため、開発者は必要に応じてプロジェクトに合わせて拡張できます。したがって、デバッグ目的でモノリシックな Java IDE を扱うのにうんざりしている場合は、気分転換に JSwat を試すことができます。
JSwat の特徴
- JSwat には、標準の GUI フロントエンドとは別に堅牢なコマンドライン インターフェースが付属しており、ヘッドレス オートメーションをサポートしています。
- さらにカスタマイズできる寛容な CDDL (Common Development and Distribution License) ライセンスが付属しています。
- コマンドライン インターフェースは、Java に似た式の評価やメソッドの呼び出しなど、いくつかの追加機能を公開しています。
- このソフトウェアはもはや積極的に保守されていませんが、Java アプリケーションをデバッグするための簡単な方法を提供しています。
18.アフィニック デバッガー
Affinic Debugger は、GNU デバッガーおよび LLVM デバッガー用の直感的なグラフィカル フロントエンドです。開発者がお気に入りの Linux デバッガーの可能性を最大限に引き出すのを支援することを目的としています。有料ソフトウェアですが、ライト版は無料で入手できます。さらに、インターフェイスは非常に高速で、楽しいユーザー エクスペリエンスを提供します。このデバッガーから GDB と LLDB のすべての機能を使用できるため、エンタープライズ プロジェクトに非常に適しています。
Affinic Debugger の機能
- 開発者は、適切に配置されたツールバーとメニューから、一般的に使用されるすべての機能に直接アクセスできます。
- Affinic Debugger は、コードベースをより迅速に理解するのに役立つカーソル トレース印刷メカニズムを提供します。
- 複数のビュー、ベクトル命令などにアクセスできる、魅力的なアセンブリ レベルのグラフィカル デバッグ機能を備えています。
- Affinic Debugger には、アセンブリからバイナリへの変換、簡単なスレッド ビュー、リモート デバッグなどのサポートが組み込まれています。
19.保証++
Insure++ は、C および C++ プログラム用の非常に強力なメモリ デバッガです。最先端のコード パーサー、堅牢なレポート方法、事前に構築された何百ものヒューリスティックなど、いくつかの驚くべき機能を備えています。 Insure++ は、エンタープライズ プロジェクトで働く専門家を対象としており、優れた最適化サポートを提供します。メモリオーバーフローやリーク、ポインタの誤用などをキャッチしにくい有料ソフトです。私たちの編集者は、本格的なエンタープライズ製品を探している開発者にこのデバッガーを強くお勧めします.
Insure++の特徴
- Insure++ は、メモリ リーク、バッファ オーバーフローとアンダーフロー、スタック トレース、その他多くのエンタープライズ機能の検出をサポートしています。
- バグの種類、問題のある式、破損したメモリ ブロック、ローカルまたはグローバルのスタック データなどの情報を報告できます。
- 開発者は、問題を引き起こしているコンテンツや将来のプログラム クラッシュを引き起こす可能性のあるコンテンツを簡単に視覚化できます。
- プロフェッショナルなホワイトペーパーと開発者向けマニュアルの優れたドキュメント サポートが付属しています。
20.デュマ
D.U.M.A または Detect Unintended Memory Access は、私たちのリストに追加されたもう 1 つのオープンソースです。これは、C および C++ で作成されたプログラム向けの魅力的なデバッガーです。これは、いくつかの機能が追加された Electric Fence デバッガーのフォークであり、動的メモリ チェック、リークの検出、不正なメモリ アクセスなどを実行するために使用できます。 Electric Fence と同様に、仮想レベル メモリを使用してメモリ ベースのエラーを検出します。したがって、有能な Linux C++ デバッガーをブラウジングしている場合は、D.U.M.A をご覧ください。
D.U.M.Aの特徴
- malloc、calloc、memalign などの従来のすべてのメモリ割り当てメソッドと、それに対応する解放メソッドをオーバーロードすることで機能します。
- D.U.M.A は Linux カーネルのメモリ管理ユニットを使用して、不正なメモリ アクセスから保護します。
- 開発者は、ソースを変更したり再コンパイルしたりすることなく、バグ修正をテストできます。
- このツールが提供するオープンソースの GNU GPL ライセンスにより、シームレスなサードパーティのカスタマイズが可能になります。
結末
Linux デバッガーは、最新のシステムおよびソフトウェア開発における重要な部分で構成されています。有能なデバッガーの需要は常に高く、高給のコンピューター サイエンスの仕事を探している場合は、汎用性の高い一連のデバッガーを処理できることが必須です。 Linux はさまざまな目的のためにさまざまなデバッガーを提供しているため、初心者は適切なソリューションを選択するのに苦労することがよくあります。 GNU Debugger と LLDB および IDA は、間違いなく入手できる最も強力なものです。ただし、strace など、言語またはシステム固有のプログラミングの問題を解決するために構築された多数のツールから選択することもできます。