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

我一定是在做错事。 我是intellij的新手。 从日食中切换。 我有一个在weblogic上运行的JAX WS应用程序。 要部署的工件是ear文件。 我一直在努力让Intellij工作的调试器。 我有终极版。 我确实创建了一个运行调试配置,但它只是通过代码而不是停在我想要的位置。 调试器显示没有支票或十字的红点。

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

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

在此处输入图像描述

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

在此处输入图像描述

我弄清楚我的问题是什么,我认为问题是特定于我和我的应用程序的性质。 实际上我应该把它称为自我引发的问题。 让我解释一下事件的本质。

  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,就像这样

在此处输入图像描述

  1. 但是,weblogic没有使用intellij传递的JAVA_OPTIONS。 我相信它被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不允许你搞砸它(它是readonly)。

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

现在我可以调试了。

要在IntelliJ上设置WebLogic调试:

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

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

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

IntelliJ远程调试器

– 编辑1–

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

如果你的程序是multithreading的,断点可能不会在你当前的线程上被击中,它可能会丢失断点。

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

– 编辑2 –

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