IntelliJ IDEA 2025.2 Help

调试 GraalVM 本机镜像

IntelliJ IDEA 可让您调试 GraalVM native images。

安装 GraalVM Native Debugger 插件

此功能依赖于 GraalVM Native Debugger 插件,您需要安装并启用。

  1. Ctrl+Alt+S 打开设置,然后选择 插件

  2. 打开 Marketplace 选项卡,找到 GraalVM Native Debugger 插件,然后点击 安装 (如果系统提示,请重启 IDE)。

操作系统

GraalVM 构建还无法为除 Linux 以外的操作系统生成 调试信息

要在其他操作系统上调试本地映像,您必须编译 Linux 的可执行文件,并在 Docker 容器中 运行。 如果您使用 Windows,您也可以使用 WSL 来实现此目的。

有关 Docker 容器的要求,请参阅 Docker 镜像

前提

在调试 GraalVM Native 镜像之前,请确保检查以下先决条件:

  • 该构建产物必须使用 调试信息进行编译。

    调试信息是调试器用来理解运行的程序与源代码之间映射关系的元数据。 它由编译器标志在构建阶段控制,并且通常在生产构建中不存在。

  • 构件必须以最小(最好为零)的优化进行编译。

    在启用优化的情况下,您可能能够调试本机可执行文件;但是,这可能会限制调试器功能。 例如,如果可执行文件是使用 -O2 优化级别(也称为 release )编译的,您将只能检查线程的堆栈和一些全局变量。

  • 由于调试器依赖于应用程序的源代码,请确保您能够访问用于构建该应用程序的 确切版本的源代码。

  • 如果在 Docker 容器或远程环境中调试,目标必须安装并运行 gdbserver

在 Linux 上进行本地调试

如果您在 Linux 上使用 GraalVM Native Image 运行配置运行可执行文件,您可以在不进行额外设置的情况下对其进行调试。

调试 'GraalVM Native Image' 运行配置

附加到正在运行的本地可执行文件

如果您不是在 Linux 上或不是从 IntelliJ IDEA 执行程序,请使用 GraalVM Native Attach 运行配置。

创建运行配置

  1. 运行小部件中点击运行配置菜单并选择 编辑配置

  2. 请点击 添加新配置 工具栏上的或按下 Alt+Insert ,然后选择 GraalVM Native Attach

  3. 请指定以下数值:

    附加字符串(host:port)

    将要附加到进程的主机和端口,格式如下: 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 Native Attach 运行配置之后,请像往常一样运行本机可执行文件。 当目标进程启动后,启动您为调试创建的运行配置。

启动运行配置

当调试器成功附加时,应用程序输出将显示在控制台中。

终止调试器会话

  • 点击 停止按钮调试 工具窗口中。

    或者,按 Ctrl+F2 并选择要终止的进程(如果有两个或更多)。

    调试器工具栏上的 Stop 按钮

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" } ] } ]
最后修改日期: 2025年 9月 22日