IntelliJ IDEA 2026.1 Help

GraalVM ネイティブイメージのデバッグ

IntelliJ IDEA を使用すると、GraalVM ネイティブイメージをデバッグできます。

GraalVM Native デバッガー プラグインをインストールする。

この機能は、インストールして有効にする必要がある GraalVM ネイティブデバッガー(英語)プラグインに依存しています。

  1. Ctrl+Alt+S を押して設定を開き、 プラグイン を選択します。

  2. Marketplace タブを開き、 GraalVM ネイティブデバッガープラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。

オペレーティングシステム

GraalVM ビルドでは、Linux 以外のオペレーティングシステムの デバッグ情報(英語)を生成できません。

別のオペレーティングシステムでネイティブイメージをデバッグするには、実行可能ファイルを Linux 用にコンパイルし、 Docker コンテナーで実行する必要があります。 Windows の場合は、この目的で WSL を使用することもできます。

Docker コンテナーの要件については、 Docker イメージ を参照してください。

前提条件

GraalVM Native イメージをデバッグする前に、次の前提条件を確認してください。

  • アーティファクトは デバッグ情報(英語)を使用してコンパイルする必要があります。

    デバッグ情報は、実行中のプログラムとソースコード間のマッピングを理解するためにデバッガーが使用するメタデータです。 これはビルド段階でコンパイラーフラグによって制御され、実稼働ビルドでは存在しないことがよくあります。

  • アーティファクトは、最小限の(できればゼロの)最適化でコンパイルする必要があります。

    最適化されたネイティブ実行可能ファイルをデバッグできる場合もありますが、デバッガーの機能が制限される可能性があります。 例: 実行可能ファイルが -O2 最適化レベル (release とも呼ばれます) でコンパイルされている場合、スレッドのスタックと一部のグローバル変数しか調べることができません。

  • デバッガーはアプリケーションのソースに依存しているため、ビルドに使用されたソースの 正確なバージョンにアクセスできることを確認してください。

  • Docker コンテナーまたはリモート環境でデバッグする場合、ターゲットに gdbserver がインストールされ、実行されている必要があります。

Linux でのローカルデバッグ

Linux 上で GraalVM ネイティブイメージ 実行構成を使用して実行可能ファイルを実行している場合は、追加のセットアップなしでデバッグできます。

「GraalVM Native Image」実行構成をデバッグする

実行中のネイティブ実行ファイルにアタッチする

Linux を使用していない、または IntelliJ IDEA からプログラムを実行していない場合は、 GraalVM ネイティブアタッチ 実行構成を使用します。

実行構成の作成

  1. 実行ウィジェットの実行構成メニューをクリックし、 実行構成の編集 を選択します。

  2. ツールバーの 新規構成の追加 をクリックするか、 Alt+Insert を押して、 GraalVM ネイティブアタッチ を選択します。

  3. 次の値を指定します。

    紐を付ける (ホスト: ポート)

    プロセスにアタッチするためのホストとポートは、次のフォーマットで指定します: host:port

    モジュールのクラスパスを使用

    アプリケーションのコンパイルに使用するクラスパスを持つモジュールを選択します。

    シンボルファイル

    デバッグシンボル(英語)を含むファイル。 デバッガーはこの情報を使用して、コンパイルされたプログラムのバイナリ命令を元のソースコードにマッピングします。

    システムルート

    リモートホストで使用されるシステムライブラリ (libc など) のデバッグシンボルのディレクトリ。 空白のままにすると、デバッガーはリモートホスト上でこれらのライブラリのデバッグシンボルを検索します。

    ソースマッピング

    特殊なケースのためのオプションのソースマッピング。 例: リモートアプリが /tmp/buildserver/my_app/MyApp.java のソースからビルドされ、ソースが /home/me_user/my_app/MyApp.java にローカルにある場合、正しいマッピングは次のようになります: /tmp/buildserver/my_app/ , /home/me_user/my_app/MyApp.java

GraalVM ネイティブアタッチ 実行構成を設定したら、通常どおりネイティブ実行可能ファイルを実行します。 ターゲットプロセスが開始したら、デバッグ用に作成した実行構成を起動します。

実行構成を起動する

デバッガーが正常に接続されると、アプリケーションの出力がコンソールに表示されます。

デバッガーセッションを終了する

  • デバッグ ツールウィンドウで 停止ボタン をクリックします。

    または、 Ctrl+F2 を押して、終了するプロセスを選択します(2 つ以上ある場合)。

    デバッガーツールバーの停止ボタン

Docker イメージ

Docker コンテナー内の GraalVM ネイティブ実行可能ファイルをデバッグするときに、 次の Docker イメージ(英語)を参照として使用できます。

ARG JAVA_VERSION=21 FROM ghcr.io/graalvm/native-image-community:${JAVA_VERSION} RUN microdnf update -y oraclelinux-release-el9 \ && microdnf --enablerepo ol9_codeready_builder install -y gdb-gdbserver gcc maven \ && microdnf clean all

Docker イメージを実行およびデバッグする手順については、 ターゲットの実行 を参照してください。

式からオブジェクトを作成する

新しいオブジェクトの作成を伴う 式を評価する場合は、次のオプションを使用してアプリケーションをビルドする必要があります。

-H:ReflectionConfigurationFiles=reflection-config.json

reflection-config.json ファイルには次の構成が含まれている必要があります。

[ { "name" : "jdk.internal.misc.Unsafe", "methods": [ { "name": "getUnsafe" }, { "name": "allocateInstance" } ] } ]
2026 年 3 月 30 日