Intellij调试器不会在断点处停止
我一定是在做错事。 我是intellij的新手。 从日食中切换。 我有一个在weblogic上运行的JAX WS应用程序。 要部署的工件是ear文件。 我一直在努力让Intellij工作的调试器。 我有终极版。 我确实创建了一个运行调试配置,但它只是通过代码而不是停在我想要的位置。 调试器显示没有支票或十字的红点。
编辑 – 我正在运行“本地”运行/调试配置。
这是我的运行/调试配置的屏幕截图。
这是启动/连接的屏幕截图
我弄清楚我的问题是什么,我认为问题是特定于我和我的应用程序的性质。 实际上我应该把它称为自我引发的问题。 让我解释一下事件的本质。
-
我一直在使用eclipse开发并在本地安装weblogic实例。 我的应用程序需要一致性缓存服务器,并且我在启动域时几乎没有其他JVM参数。 因此我在
$DOMAIN_HOME/bin/setDomainEnv.sh
文件的开头添加了一行代码,如此JAVA_OPTIONS="- Dtangosol.coherence.distributed.localstorage=false -Dtangosol.coherence.wka=devmachine and blah blah blah
-
我切换到intellij并开始处理这个项目,然后配置weblogic插件并运行配置等。
- 我注意到intellij在运行/调试配置的启动/连接选项卡中添加了一个JAVA_OPTIONS,就像这样
- 但是,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......
- 当我从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调试:
-
找到WebLogic调试端口:这是WebLogic上用于调试的端口。 默认的调试端口是8453但是如果它被更改了你可以在config.xml中找到它(在你的域home的config文件夹下)或者setDomainEnv.sh找到DEBUG_PORT(我假设它是.sh而不是.bat as您似乎正在使用Mac OS X)。
-
远程调试器配置:转到配置并选择新建,然后选择“远程”,键入任何合理的名称并在端口下方(图像中的橙色块)键入您在1中找到的值。对于主机(绿色块) )键入localhost [旁注:如果调试端口被暴露,您可以通过键入服务器主机名或IP来连接到远程服务器]。
- 启动调试器:启动刚刚设置的调试配置,将弹出调试窗口,如果端口正确,则表示已连接到远程主机,您可以进行调试。
– 编辑1–
再次阅读你的问题错过了关于你已经设置了远程配置的部分。
如果你的程序是multithreading的,断点可能不会在你当前的线程上被击中,它可能会丢失断点。
当远程配置工作时,调试器中有一个下拉列表,您应该能够选择要调试的线程。
– 编辑2 –
添加了远程调试器设置的映像
- 无法在IntelliJ Idea中启动spring-boot应用程序
- 忽略IntelliJ中的Java .class文件导航到文件对话框?
- 在构思ide中获取菱形运算符的编译错误
- 在IntelliJ IDEA 2017.2.1中无法使用–patch-module编译Java 9模块
- 在Gradle构建之后,Intellij Idea不会在消息工具窗口中显示错误
- IntelliJ IDEA无法解析导入javax.servlet。*;
- 所有子包的IntelliJ IDEA @ParametersAreNonnullByDefault
- IntelliJ IDEA + Maven iml文件中依赖项的需要是什么?
- 使用Intellij在gradle项目中设置断点