簡體   English   中英

遠程調試tomcat時Intellij斷點未命中

[英]Intellij break point does not hit when remote debugging tomcat

環境:

  • 操作系統:Mac 10.13.6
  • Java-8
  • 雄貓-7
  • Intellij 社區 2019.3
  • 搖籃 5.2.1

命令行輸出:

$ export GRADLE_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=address=5005"
$ ./gradlew myproj-web-java:tomcatRunWar
Listening for transport dt_socket at address: 5005
Starting a Gradle Daemon, 2 incompatible and 2 stopped Daemons could not be reused, use --status for details

運行/調試配置:

Debugger Mode: Attach to remote JVM
Use module classpath: myproj-parent:myproj-web-java:main

開始調試,Intellij 輸出:

Connected to the target VM, address: 'localhost:5005', transport: 'socket'

我在控制器中添加了斷點並通過瀏覽器訪問頁面。 頁面渲染正確,可以看到控制台輸出的日志,但是沒有命中斷點。


如果我在 Intellij 中暫停程序,我可以看到主線程的堆棧:

kevent0:-1, KQueueArrayWrapper (sun.nio.ch)
poll:198, KQueueArrayWrapper (sun.nio.ch)
doSelect:117, KQueueSelectorImpl (sun.nio.ch)
lockAndDoSelect:86, SelectorImpl (sun.nio.ch)
select:97, SelectorImpl (sun.nio.ch)
select:101, SelectorImpl (sun.nio.ch)
read:179, SocketConnection$SocketInputStream (org.gradle.internal.remote.internal.inet)
fill:139, Input (com.esotericsoftware.kryo.io)
require:159, Input (com.esotericsoftware.kryo.io)
readInt:308, Input (com.esotericsoftware.kryo.io)
readSmallInt:120, KryoBackedDecoder (org.gradle.internal.serialize.kryo)
read:139, DefaultSerializerRegistry$TaggedTypeSerializer (org.gradle.internal.serialize)
read:36, Serializers$StatefulSerializerAdapter$1 (org.gradle.internal.serialize)
receive:80, SocketConnection (org.gradle.internal.remote.internal.inet)
receive:75, DaemonClientConnection (org.gradle.launcher.daemon.client)
receive:35, DaemonClientConnection (org.gradle.launcher.daemon.client)
monitorBuild:211, DaemonClient (org.gradle.launcher.daemon.client)
executeBuild:179, DaemonClient (org.gradle.launcher.daemon.client)
execute:142, DaemonClient (org.gradle.launcher.daemon.client)
execute:93, DaemonClient (org.gradle.launcher.daemon.client)
run:52, RunBuildAction (org.gradle.launcher.cli)
execute:207, Actions$RunnableActionAdapter (org.gradle.internal)
execute:402, CommandLineActionFactory$ParseAndBuildAction (org.gradle.launcher.cli)
execute:375, CommandLineActionFactory$ParseAndBuildAction (org.gradle.launcher.cli)
execute:37, ExceptionReportingAction (org.gradle.launcher.cli)
execute:23, ExceptionReportingAction (org.gradle.launcher.cli)
execute:368, CommandLineActionFactory$WithLogging (org.gradle.launcher.cli)
execute:298, CommandLineActionFactory$WithLogging (org.gradle.launcher.cli)
doAction:36, Main (org.gradle.launcher)
run:45, EntryPoint (org.gradle.launcher.bootstrap)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
runNoExit:60, ProcessBootstrap (org.gradle.launcher.bootstrap)
run:37, ProcessBootstrap (org.gradle.launcher.bootstrap)
main:23, GradleMain (org.gradle.launcher)

主線程或其他線程中沒有我的代碼。 但是,如果我檢查進程列表,似乎沒有用於 tomcat 的獨立 jvm 進程。

當程序暫停時,我仍然可以在控制台輸出暫停時訪問該頁面。

GRADL_OPTS設置為這樣 - 您正在為 Gradle 守護程序本身啟動調試進程,而不是為 Tomcat 服務器實際運行的分叉 Java 進程啟動調試進程。

您可以使用Gradle 運行/調試配置來啟動 Tomcat 服務器,您可以在其中為分叉進程指定 JVM 選項:

在此處輸入圖片說明

截圖來自這篇文章: Debugging a spring-mvc web-app with the gradle-tomcat-plugin and IntelliJ IDEA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM