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

Intellij debugger does not stop at breakpoints

我一定是哪里做错了。我是 intellij 的新手。从 Eclipse 切换。我在 weblogic 上有一个 运行 的 JAX WS 应用程序。要部署的工件是一个 ear 文件。我一直在努力让调试器在 intellij 上工作。我有终极版。我确实创建了一个 运行 调试配置,但它只是通过代码并且不会在我想要的位置停止。调试器显示一个没有勾号或叉号的红点。

编辑 - 我正在 运行配置 "local" run/debug 配置。

这是我的 run/debug 配置的屏幕截图。

这是startup/Connection

的屏幕截图

要在 IntelliJ 上设置 WebLogic 调试:

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

  2. Remote Debugger Configuration:进入配置并选择new,然后select "Remote",输入任意名称明智的,在端口(图像中的橙色块)下键入您在 1 中找到的值。对于主机(绿色块)键入 localhost [旁注:您可以通过键入服务器主机名或 IP 来连接到远程服务器,如果调试端口暴露了。

  3. 启动调试器:启动你刚刚设置的调试配置,调试window会弹出,如果端口正确它会说它已经连接到远程主机,你很高兴去调试。

--编辑1--

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

如果您的程序是多线程的,则可能缺少断点断点可能不会在您所在的当前线程上命中。

当远程配置正常工作时,调试器中会出现一个下拉列表,您应该可以select 要调试的线程。

-- 编辑 2 --

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

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

  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 在 startup/connection 选项卡中添加了一个 JAVA_OPTIONS Run/Debug 配置 像这样

  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 代理信息

现在我可以调试了。

删除配置并创建一个新配置为我解决了这个问题。