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

问题描述 投票:0回答:4

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

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

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

enter image description here

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

enter image description here

java intellij-idea maven-3 weblogic12c
4个回答
10
投票

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

  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代理正在运行。我确实注意到,在我问这个问题之前,我没有看到那个特定的日志,但我想也许 IntelliJ 正在幕后做一些事情,因为 JAVA_OPTIONS 正在被传递,而 intellij 不允许你搞乱它(它是只读的)。

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

现在我可以调试了。


5
投票

要在 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 --

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


1
投票

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


0
投票

这对我有用

在 Intellij Idea 下

单击编辑配置 转到运行并添加以下命令 spring-boot:run -Dspring-boot.run.fork=false

© www.soinside.com 2019 - 2024. All rights reserved.