Intellij 调试器不会在断点处停止

2022-09-04 02:47:57

我一定是在这里做错了什么。我是intellij的新手。从日食切换。我有一个在 weblogic 上运行的 JAX WS 应用程序。要部署的工件是 ear 文件。我一直在努力让intellij上的调试器工作。我有终极版。我确实创建了一个运行调试配置,但它只是传递代码,并没有在我所需的位置停止。调试器显示一个不带复选或叉号的红点。

编辑 - 我正在运行“本地”运行/调试配置。

下面是我的运行/调试配置的屏幕截图。

enter image description here

这是启动/连接的屏幕截图

enter image description here


答案 1

我弄清楚了我的问题是什么,我认为这个问题是特定于我和我的应用程序的性质。实际上,我应该称之为自我诱导的问题。让我解释一下事件的性质。

  1. 我一直在使用eclipse来开发和本地安装weblogic实例。我的应用程序需要一致性缓存服务器,并且我在启动域时传递的其他 JVM 参数很少。因此,我在文件开头添加了一行,如下所示$DOMAIN_HOME/bin/setDomainEnv.sh

    JAVA_OPTIONS="- Dtangosol.coherence.distributed.localstorage=false -Dtangosol.coherence.wka=devmachine and blah blah blah

  2. 我切换到intellij并开始处理这个项目,然后配置weblogic插件并运行配置等。

  3. 我注意到 intellij 在“运行/调试配置”的“启动/连接”选项卡中添加了一个JAVA_OPTIONS,如下所示

enter image description here

  1. 然而,intellij通过的JAVA_OPTIONS没有被weblogic使用。我相信它被 setDomainEnv.sh 覆盖了,这就是为什么我看到以下日志。

java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode) Starting WLS with line: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -client -Xms512m -Xmx512m -XX:MaxPermSize=256m -Dweblogic.Name=AdminServer -Djava.security.policy=/Users/dparupud/omw/oracle/middleware/weblogic_10.3.6/wlserver_10.3/server/lib/weblogic.policy -Dtangosol.coherence.distributed.localstorage=false -Dtangosol.coherence.wka=devmachine blah blah blah......

  1. 当我去从 setDomainEnv.sh 中删除JAVA_OPTIONS并从intellij重新启动服务器时,我看到了以下日志

starting weblogic with Java version: java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode) Starting WLS with line: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -client -Xms512m -Xmx512m -XX:MaxPermSize=256m -Dweblogic.Name=AdminServer -Djava.security.policy=/Users/dparupud/omw/oracle/middleware/weblogic_10.3.6/wlserver_10.3/server/lib/weblogic.policy - agentlib:jdwp=transport=dt_socket,address=127.0.0.1:65501,suspend=y,server=n

现在日志显示 jdwp 代理正在运行。我确实注意到,在我提出SO问题之前,我没有看到那个特定的日志,但我认为也许IntelliJ正在封面内做一些事情,因为JAVA_OPTIONS正在通过,而intellij不允许你搞砸它(它是只读的)。

我想我可以从intellij传递所有jvm参数,也可以在 setDomainEnv.sh 中添加jdwp代理信息。

现在我能够调试。


答案 2

要在 IntelliJ 上设置 WebLogic 调试,请执行以下操作:

  1. 查找 WebLogic 调试端口:这是 WebLogic 上公开用于调试的端口。默认的调试端口是8453,但如果它被更改,你可以在config.xml(在域主目录的config文件夹下)或 setDomainEnv.sh 找到它,DEBUG_PORT(我假设它是.sh而不是.bat,因为你似乎在使用Mac OS X)。

  2. 远程调试器配置:转到配置并选择“新建”,然后选择“远程”,键入任何合理的名称,然后在端口(图像中的橙色块)下键入您在1中找到的值。对于主机(绿色块),键入 localhost [旁注:如果暴露调试端口,则可以通过键入该服务器主机名或 IP 来连接到远程服务器]。

  3. 启动调试器:启动您刚刚设置的调试配置,将弹出调试窗口,如果端口正确,它将说它已连接到远程主机,您可以进行调试。

IntelliJ remote Debugger

--编辑 1--

再次阅读您的问题,错过了有关您已经设置远程配置的部分。

如果您的程序是多线程的,则可能会丢失断点,因此可能无法在您所在的当前线程上命中断点。

当您使用远程配置工作时,调试器中有一个下拉列表,您应该能够在其中选择要调试的线程。

- 编辑2 -

添加了远程调试器设置的图像


推荐