3.3. デバッグシンボルの設定の確認
デバッグシンボルの設定を確認および設定できます。
以下のコマンドを入力して、インストールされているパッケージのリストを取得します。
$ sudo yum list installed | grep 'java-11-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) でアプリケーションを起動する関数。