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
以上命令完成以下任务:
- 处理 SIGSEGV 错误,因为 JVM 使用 SEGV 进行堆栈溢出检查。
-
将待处理的断点设置为
yes
。 -
在
JavaCalls::call
函数中调用 break 语句。在 HotSpot (libjvm.so)中启动应用程序的功能。