3.3. デバッグシンボルの設定の確認
デバッグシンボルの設定を確認および設定できます。
インストール済みのパッケージのリストを表示するには、以下のコマンドを実行します。
sudo yum list installed | grep 'java-1.8.0-openjdk-debuginfo'
$ sudo yum list installed | grep 'java-1.8.0-openjdk-debuginfo'Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバッグ情報パッケージがインストールされていない場合は、以下のコマンドを実行して、足りないパッケージをインストールします。
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
$ 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_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のブレークポイントに到達する場合は、以下のコマンドを実行します。
gdb -ex 'handle SIGSEGV noprint nostop pass' -ex 'set breakpoint pending on' -ex 'break JavaCalls::call' -ex 'run' --args java ./HelloWorld
$ gdb -ex 'handle SIGSEGV noprint nostop pass' -ex 'set breakpoint pending on' -ex 'break JavaCalls::call' -ex 'run' --args java ./HelloWorldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドは、以下のタスクを完了します。
- JVM はスタックオーバーフローチェックに SEGV を使用するため、SIGSEGV エラーを処理します。
-
保留中のブレークポイントを
yesに設定します。 -
JavaCalls::call関数で break ステートメントを呼び出します。HotSpot(libjvm.so) でアプリケーションを起動する関数。