【问题标题】:Intellij debugger does not stop at breakpointsIntellij 调试器不会在断点处停止
【发布时间】:2015-07-17 06:13:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java intellij-idea maven-3 weblogic12c


    【解决方案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 在 Run/Debug Configurationsstartup/connection 选项卡中添加了一个 JAVA_OPTIONS,就像这样

    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. 启动调试器:启动刚刚设置的调试配置,会弹出调试窗口,如果端口正确,会提示已连接到远程主机,可以开始调试了。

      --编辑1--

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

      如果你的程序是多线程的,可能会丢失断点,断点可能不会在你所在的当前线程上命中。

      当您进行远程配置工作时,调试器中有一个下拉菜单,您应该能够在其中选择要调试的线程。

      -- 编辑 2--

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

      【讨论】:

      • 8bitme - 感谢您的回复。我会去编辑我的问题,说我使用的运行/调试配置是本地的而不是远程的。如果您看到第二个屏幕截图,我相信 intellij 正在传递 weblogic 的端口以公开调试器。它是预先填充的,我相信我无法改变它。其次,不,它不是多线程的。
      • 没问题,它被称为“远程”,但它仍然用于调试Weblogic的本地实例,只要远程Config中的主机是本地主机,它就会指向您本地的weblogic实例。跨度>
      • 只是添加到您似乎正在使用的配置是控制应用程序服务器而不是调试它。当我在 PC 和我的 IDE 旁边时,我会添加屏幕截图以澄清
      【解决方案3】:

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

      【讨论】:

      • 升级 intellij 后开始出现此问题。删除并重新创建配置解决了我的所有调试问题。
      猜你喜欢
      • 2023-03-12
      • 2014-10-29
      • 2015-06-30
      • 2010-11-25
      • 2011-07-14
      • 2013-09-27
      • 2015-02-08
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多