3.3. デバッグシンボルの設定の確認

デバッグシンボルの設定を確認および設定できます。

  • インストール済みのパッケージの一覧を表示するには、以下のコマンドを実行します。

    $ sudo yum list installed | grep 'java-1.8.0-openjdk-debuginfo'
  • デバッグ情報パッケージがインストールされていない場合は、以下のコマンドを実行して、足りないパッケージをインストールします。

    $ sudo yum debuginfo-install glibc-2.28-151.el8.x86_64 libgcc-8.4.1-1.el8.x86_64 libstdc++-8.4.1-1.el8.x86_64 sssd-client-2.4.0-9.el8.x86_64 zlib-1.2.11-17.el8.x86_64
  • 特定のブレークポイントに到達する場合は、以下のコマンドを実行します。

    $ gdb -ex 'handle SIGSEGV noprint nostop pass' -ex 'set breakpoint pending on' -ex 'break JavaCalls::call' -ex 'run' --args java ./HelloWorld

    上記のコマンドは、以下のタスクを完了します。

    • JVM はスタックオーバーフローチェックに SEGV を使用するため、SIGSEGV エラーを処理します。
    • 保留中のブレークポイントを yes に設定します。
    • JavaCalls::call 関数で break ステートメントを呼び出します。HotSpot(libjvm.so) でアプリケーションを起動する関数。