この記事の最終更新日:2020年1月
理想郷では、バグが生産ラインに到達することは決してありません。 しかし、ソフトウェアのエラーは開発者の生活の中で避けられないものです。 Java デバッグ ツールは、エラーをより速く解決するために存在し、その結果、ベストを尽くすことができます。
この Java デバッグ ツールのリストは、オプションを迅速に評価し、その仕事に最適なものを見つけるのに役立ちます。 Raygun はすべてのクラッシュをキャプチャし、リアルタイムでレポートします
Raygun Crash Reporting
デバッグで最も難しいことの 1 つは、ユーザーがどのエラーを経験しているかを常に知っているわけではない、ということです。 Raygun Error Monitoring には、実稼働時およびそれ以降に発生するバグ、エラー、クラッシュを発見するために必要なすべてが備わっています。
Raygun4Java では、デスクトップおよびコンソール Java および Scala アプリから、デフォルトで例外を送信することが可能です。 すべての例外を Raygun ダッシュボードに送信できるので、完全なスタック トレース、メソッド、関数、クラス名に関連するデータなど、各エラーの詳細な診断を確認できます。
インストールと設定は、数分もかかりません。 Raygun は、Throwable
クラスを継承するあらゆるオブジェクトを処理できます。 Breadcrumbs、フィルター、およびカスタム タグなどの高度な機能により、デバッグ プロセスも簡単になります。
Eclipse
Eclipse は Java 開発に使用される人気のオープンソース IDE ですが、PHP や Python、Ruby および C# など他の言語用のプラグインも備えています。 Eclipse プラットフォームには、実行中にコードを検査するのに役立つ高度なデバッグ機能が付属しており、充実したツールとなっています。 Eclipse の最も優れた機能の 1 つに Debug Perspective があり、変数、ブレークポイント、スレッド、コールスタックなど、関連するデバッグ情報を並べて表示することができます。
Eclipse では、スレッドを中断および再開し、プログラムの実行をステップ実行し、値を検査し、式を評価することもできます。
NetBeans
NetBeans も無料のオープンソース IDE の一つです。 Eclipse と同様に、デバッグ機能はプラットフォームに組み込まれているため、IDE をダウンロードするだけでデバッグ ツールを入手できます。
NetBeans には異なるダウンロード バンドルがあり、Java の場合は Java SE または Java EE エディションのいずれかが必要です。 後者では、HTML5、JavaScript、および GlassFish と Tomcat サーバーもサポートされているため、より本格的な開発作業にはこちらの方が適しています。 実際、どちらもソース コードを検査し、メモリ リークや並行処理の問題などの問題を特定するための優れたデバッグ ツールです。 NetBeans では、ブレークポイントや条件付きブレークポイントの設定、コードのステップ実行、スレッドの切り替え、およびリアルタイムでの実行の監視が可能です。
NetBeans では、Java および JavaFX GUI アプリケーションの視覚的要素をデバッグできる便利な Visual Debugger 機能も提供しています。 ビジュアル・デバッガを使用して、GUIアクションにリスナーを追加し、コンポーネント・プロパティとコンポーネントの階層を表示し、ソース・コードを見つけることができます。
NetBeansを使用する場合、組み込みNetBeans Profilerツールにアクセスすることもできます。 プロファイラーを使用すると、メモリ使用量、CPU パフォーマンス、スレッド状態、および Java アプリケーションの他の特性をチェックできます。 これらの機能は、速度とメモリの使用を最適化し、オーバーヘッドを削減するのに役立ちます。
2018年初めにNetBeansがApache Software Foundationに買収されたため、今後さらに統合と拡張機能を期待できます – 特に、ApacheはすでにMavenビルドツールからTomcatサーバーまでJavaプロジェクトの多くをホストしているためです。
IntelliJ IDEA
Eclipse と NetBeans に加えて、IntelliJ IDEA は Java 開発者が通常使用する IDE を尋ねられたときに挙げる 3 番目の IDE です。 JetBrains 社によって開発された IntelliJ IDEA には、オープン ソースのコミュニティ版と有料の商用版の両方が用意されています。 主にJavaのIDEですが、Groovy、Kotlin、Scalaなど、他のJVM言語でも使用できます。 商用版は、Spring、Java EE、Play、Grails、GWT、Vaadinなど、多くのJVMおよび非JVMフレームワークもサポートしています。 さらに、両エディションともAndroidの開発をサポートしており、複数のプロジェクトを実行している場合には最適です。 前述の IDE デバッガーと同様に、IntelliJ IDEA にも、すぐに使用できる組み込みの Java デバッガーがあります。 IntelliJ IDEA では、以下のことが可能です。
- ブレークポイントおよびウォッチポイントの作成と設定
- 式の評価
- デバッガー セッションの一時停止と再開
- 中断したスレッドの調査
- ソースコードのステップ
- メモリ使用状況の分析
- … And more
IntelliJ IDEA を使用して、リモートで Java アプリケーションをデバッグすることもできます。
インライン デバッグは、IntelliJ IDEA の最も興味深く、ユニークな機能です。 インライン・デバッガは、コード内の変数の値を、それらが使用された行のすぐ隣に表示します。 変数の値が変更されると、インラインデバッガはその値を別の色で強調表示します。 値を確認するために、Eclipse や NetBeans のように、デバッグ ウィンドウに移動したり、各変数に 1 つずつカーソルを合わせる必要はありません。
Visual Studio Code
Java アプリケーションをデバッグするのに IDE が常に必要というわけではありません。 Microsoft のクロスプラットフォーム ソース コード エディターである Visual Studio Code は、Debugger for Java 拡張により Java デバッグを可能にします。
とにかくコード編集に Visual Studio Code を使用し、Java 開発ワークフローに軽量で使いやすいデバッグ ツールを必要とするなら、Visual Studio Code は素晴らしい選択です。 IDE デバッガーほど高度な機能はありませんが、迅速なデバッグ セッションに必要なすべてを知っています。
Visual Studio Code の Java デバッガーは、Red Hat による Language Support for Java という別の Visual Studio Code 拡張を拡張した Java Debug Server をベースとしています。
VS Code のデバッガーでは、以下のことが可能です。
- ローカルおよびリモート デバッグの実行
- 条件付きブレークポイントおよびログポイントの設定
- ソース コードをステップ実行
- 変数の検査と監視
- コールバックの表示
- Debug multiple threads
- Evaluate expression
- Use hot code replacement
VS Code のデバッガー拡張には、ドキュメントでチェックできる多くの設定オプションがあります。
The Java Debugger (jdb)
もし Java デバッグのために外部ソフトウェアを使用できない (またはしたくない) 場合、コマンドラインから Java アプリケーションをデバッグすることも可能です。 Java Debugger (jdb) は、Oracle が提供するシンプルなコマンドラインデバッガです。 これは、Java仮想マシン用のGNUデバッガ(gdb)に相当するものです。 Java DebuggerはJava SE Development Kitに含まれているので、マシンにJDKがインストールされていれば、他に何もする必要はありません。 jdb
コマンドでデバッガーを起動し、help
コマンドでコマンドのリストにアクセスできます。
Java Debugger は、実際には、Java Platform Debugger Architecture (JDPA) のデモンストレーションです。 JDPAは3つのインタフェースの集合体である。 JVM TI (Java Virtual Machine Tools Interface)、JDWP (Java Debug Wire Protocol)、および JDI (Java Debug Interface) です。 JDPA は、独自のデバッガー アプリケーションを作成するためのツールを開発者に提供するデバッグ アーキテクチャです。
jdb デバッガーは、コマンド ラインで詳細なデバッグ セッションを実行できます。 jdb デバッガーを使用すると、次のことが可能です。
- List, suspend, スレッドの再開
- 式の評価
- すべてのオブジェクト情報を表示
- ブレークポイントの設定
- ウォッチフィールド
- メソッドコールのトレース
- ステップ実行
- すべてのオブジェクト情報を表示ブレークポイントを設定
コマンドライン デバッガーは、その複雑さから、日常の開発作業には最適ではありません。 しかし、これには移植性という利点があります。 リモート IDE デバッガーにサーバーをアタッチする必要がないため、あまり手間をかけずにサーバーにセットアップできます。 これはすべて、jdb を実稼働環境で重要な迅速なトラブルシューティングのための理想的なツールにします。
プロジェクトに最適な Java デバッグ ツールはどれか。 これらのデバッグ ツールのいずれかを使用することにより、デバッグ プロセスをより迅速に行うことができます。 各ユースケースは異なりますが、オプションを評価することは、プロジェクトに適したツールを選択するのに役立ちます。
エラーがどこにあるかがわかれば、Java のデバッグはより簡単になります! Raygun Crash Reporting for Java は、開発者がより迅速かつ正確に問題を検出、診断、および解決できるようにします。 14日間の無料トライアルをご利用ください。