【发布时间】:2021-02-11 04:48:11
【问题描述】:
上下文
我有一个带有端点的小应用程序,它调用了一些转换器库。我的Run Configuration 是Tomcat 类型,并部署了一个爆炸战争,这是我的应用程序。
在该应用程序的pom.xml 的<dependencies> 中,我有一个需要调试的外部库。显然,该库是在我的应用程序中调用的。
当我在Debug 模式下启动Tomcat Run Configuration 时,日志表明代理似乎已正确设置并且工件已成功部署(以下是我认为相关的日志子集) :
C:\Apps\apache-tomcat-8.5.56\bin\catalina.bat run
[2021-02-09 01:32:03,448] Artifact crs-classic-conv-endpoint:war exploded: Waiting for server connection to start artifact deployment...
Using CATALINA_BASE: "C:\Users\me\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\ac2f062f-8f6d-4769-8de5-120d70232ac9"
Using CATALINA_HOME: "C:\Apps\apache-tomcat-8.5.56"
Using CATALINA_TMPDIR: "C:\Apps\apache-tomcat-8.5.56\temp"
Using JRE_HOME: "C:\Apps\jdk-1.8.0_181_pki18"
Using CLASSPATH: "C:\Apps\apache-tomcat-8.5.56\bin\bootstrap.jar;C:\Apps\apache-tomcat-8.5.56\bin\tomcat-juli.jar"
Connected to the target VM, address: '127.0.0.1:61873', transport: 'socket'
Connected to server
[2021-02-09 01:32:05,611] Artifact crs-classic-conv-endpoint:war exploded: Artifact is being deployed, please wait...
Root WebApplicationContext: initialization started
09-Feb-2021 13:32:30.964 INFOS [RMI TCP Connection(5)-127.0.0.1] com.sun.xml.ws.server.MonitorBase.createRoot Metro monitoring rootname successfully set to: com.sun.metro:pp=/,type=WSEndpoint,name=-RetrieveCRSClassicContractService-RetrieveCRSClassicContractPort
Registering beans for JMX exposure on startup
Bean with name 'loggingConfiguration' has been autodetected for JMX exposure
Bean with name 'mailConfiguration' has been autodetected for JMX exposure
Bean with name 'performanceConfiguration' has been autodetected for JMX exposure
Bean with name 'propertiesConfiguration' has been autodetected for JMX exposure
Located managed bean 'propertiesConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.PropertiesConfiguration]
Located managed bean 'mailConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.MailConfiguration]
Located managed bean 'performanceConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.PerformanceConfiguration]
Located managed bean 'loggingConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.LoggingConfiguration]
Registering beans for JMX exposure on startup
Bean with name 'loggingConfiguration' has been autodetected for JMX exposure
Bean with name 'mailConfiguration' has been autodetected for JMX exposure
Bean with name 'performanceConfiguration' has been autodetected for JMX exposure
Bean with name 'propertiesConfiguration' has been autodetected for JMX exposure
Located managed bean 'propertiesConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.PropertiesConfiguration]
Located managed bean 'mailConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.MailConfiguration]
Located managed bean 'performanceConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.PerformanceConfiguration]
Located managed bean 'loggingConfiguration': registering with JMX server as MBean [Foo.${service.name}.Configuration:name=ws-common-utils.LoggingConfiguration]
Root WebApplicationContext: initialization completed in 15487 ms
09-Feb-2021 13:32:32.585 INFOS [RMI TCP Connection(5)-127.0.0.1] com.sun.xml.ws.transport.http.servlet.WSServletDelegate.<init> WSSERVLET14 : initialisation du servlet JAX-WS
Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@167fa5b2: startup date [Tue Feb 09 13:32:32 EST 2021]; root of context hierarchy
[2021-02-09 01:32:33,359] Artifact crs-classic-conv-endpoint:war exploded: Artifact is deployed successfully
[2021-02-09 01:32:33,359] Artifact crs-classic-conv-endpoint:war exploded: Deploy took 27,748 milliseconds
然后,我可以看到由于白色复选标记,我的断点已注册:
但是,这只是模块src/main/java 目录中的代码的情况。我正在尝试调试的库(位于 External Libraries 中)不会注册断点:
我添加了几行日志记录,并修改了该库的 pom.xml 中的版本,并在库和我的应用程序中运行了 mvn clean install,以确保我指向了正确的代码版本。
诊断
现在奇怪的部分来了。当我运行调用我的应用程序端点的测试时,我看到以下日志:
com.my.app.ExecutionServiceException: java.lang.NullPointerException: TheConverter.java, notWithinYearBoundaries line 1110
at com.my.app.handleTransaction(MyAppEndpointHandler.java:143)
这向我证明,我在日志记录 (L1109) 上有断点的库代码确实正在运行(我在 Tomcat 日志中看到了实际日志)。
此外,当我点击MyAppEndpointHandler.java:143 时,IntelliJ 确实打开了我设置断点的类,该断点标记为已注册(是的,L61 与L143 在同一函数内)。
问题
- 当代码到达
L61上的注册断点时,IntelliJ 甚至不会中断正在运行的应用程序以向我显示调试窗口。 - IntelliJ 拒绝在外部库中注册我的断点。
我尝试过的事情
这很令人不安,我尝试了很多不同的东西(我在that other SO question 看到的一堆东西,等等):
clean & rebuild- 关闭所有项目,并删除
target、.idea/和*.iml - 更新我的 IntelliJ 版本(从
2020.3到2020.3.2) - 尝试另一个版本的 Tomcat
Invalidate Caches & Restart- 还有更多...
值得一提的是,我团队中的另外两个开发人员报告说,在他们的机器上,他们没有遇到我的问题。而且我们似乎必须使用相同的 IntelliJ 配置和设置。
设置和运行配置
这里是Tomcat Run Configuration:
这是我的Debugger 设置:
IntelliJ 调试控制台输出
这是控制台日志的部分版本:
...
[JDI: Sending Command(id=16) JDWP.VirtualMachine.TopLevelThreadGroups]
[JDI: Receiving Command(id=16) JDWP.VirtualMachine.TopLevelThreadGroups]
[JDI: Receiving: groups(ThreadGroupReferenceImpl[]): ]
[JDI: Creating new com.jetbrains.jdi.ThreadGroupReferenceImpl (id = 336)]
[JDI: Receiving: groups[i](ThreadGroupReferenceImpl): ref=336]
[JDI: Sending Command(id=18) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 6]
[JDI: Sending: suspendPolicy(byte): 0]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Receiving Command(id=18) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 4]
[JDI: Sending Command(id=20) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 7]
[JDI: Sending: suspendPolicy(byte): 0]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Receiving Command(id=20) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 5]
[JDI: Sending Command(id=22) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 8]
[JDI: Sending: suspendPolicy(byte): 1]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 5]
[JDI: Sending: classPattern(String): sun.instrument.InstrumentationImpl]
[JDI: Receiving Command(id=22) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 6]
[JDI: Sending Command(id=24) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 8]
[JDI: Sending: suspendPolicy(byte): 1]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 5]
[JDI: Sending: classPattern(String): sun.instrument.InstrumentationImpl]
[JDI: Receiving Command(id=24) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 7]
[JDI: Sending Command(id=26) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 8]
[JDI: Sending: suspendPolicy(byte): 1]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 5]
[JDI: Sending: classPattern(String): com.my.app.RetrieveCRSClassicContractEndpointHandler]
[JDI: Receiving Command(id=26) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 8]
[JDI: Sending Command(id=28) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 8]
[JDI: Sending: suspendPolicy(byte): 1]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 5]
[JDI: Sending: classPattern(String): com.my.app.RetrieveCRSClassicContractEndpointHandler]
[JDI: Receiving Command(id=28) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 9]
[JDI: Sending Command(id=30) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 8]
[JDI: Sending: suspendPolicy(byte): 1]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 5]
[JDI: Sending: classPattern(String): com.the.library.TheConverter]
[JDI: Receiving Command(id=30) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 10]
[JDI: Sending Command(id=32) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 8]
[JDI: Sending: suspendPolicy(byte): 1]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 5]
[JDI: Sending: classPattern(String): com.my.app.SomeException]
[JDI: Receiving Command(id=32) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 11]
[JDI: Sending Command(id=34) JDWP.VirtualMachine.Resume]
[JDI: Clearing VM suspended cache]
[JDI: Clearing temporary cache for ThreadReference 1]
[JDI: Receiving Command(id=1) JDWP.Event.Composite]
[JDI: Clearing temporary cache for ThreadGroupReference 336]
[JDI: Receiving: suspendPolicy(byte): 0]
[JDI: Receiving Command(id=34) JDWP.VirtualMachine.Resume]
[JDI: Receiving: events(Events[]): ]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 2]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=337]
[JDI: Receiving: signature(String): Ljava/lang/InternalError;]
[JDI: Receiving: status(int): 7]
[JDI: EventSet: SUSPEND_NONE]
[JDI: Looking up Class, signature='Ljava/lang/InternalError;', id=337]
[JDI: Caching new ReferenceType, sig=Ljava/lang/InternalError;, id=337]
[JDI: Sending Command(id=39) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving Command(id=39) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): main]
[JDI: Event: ClassPrepareEvent in thread main]
[JDI: Receiving Command(id=2) JDWP.Event.Composite]
[JDI: Receiving: suspendPolicy(byte): 0]
[JDI: Receiving: events(Events[]): ]
[JDI: Handled Prepare Event for java.lang.InternalError]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 2]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving: refTypeTag(byte): 2]
[JDI: Receiving: typeID(long): ref=338]
[JDI: Receiving: signature(String): Ljava/lang/instrument/Instrumentation;]
[JDI: Receiving: status(int): 3]
[JDI: EventSet: SUSPEND_NONE]
[JDI: Looking up Interface, signature='Ljava/lang/instrument/Instrumentation;', id=338]
[JDI: Caching new ReferenceType, sig=Ljava/lang/instrument/Instrumentation;, id=338]
[JDI: Sending Command(id=41) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving Command(id=41) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): main]
[JDI: Event: ClassPrepareEvent in thread main]
[JDI: Receiving Command(id=3) JDWP.Event.Composite]
[JDI: Receiving: suspendPolicy(byte): 1]
[JDI: Handled Prepare Event for java.lang.instrument.Instrumentation]
[JDI: Receiving: events(Events[]): ]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 7]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=339]
[JDI: Receiving: signature(String): Lsun/instrument/InstrumentationImpl;]
[JDI: Receiving: status(int): 3]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 6]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=339]
[JDI: Receiving: signature(String): Lsun/instrument/InstrumentationImpl;]
[JDI: Receiving: status(int): 3]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 2]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=1]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=339]
[JDI: Receiving: signature(String): Lsun/instrument/InstrumentationImpl;]
[JDI: Receiving: status(int): 3]
[JDI: EventSet: SUSPEND_EVENT_THREAD]
...
[JDI: EventSet: SUSPEND_NONE]
[JDI: Looking up Class, signature='Lcom/another/library/AbstractServiceRequestHandler;', id=7241]
[JDI: Caching new ReferenceType, sig=Lcom/another/library/AbstractServiceRequestHandler;, id=7241]
[JDI: Sending Command(id=20792) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving Command(id=20792) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(4)-127.0.0.1]
[JDI: Event: ClassPrepareEvent in thread RMI TCP Connection(4)-127.0.0.1]
[JDI: Receiving Command(id=6914) JDWP.Event.Composite]
[JDI: Receiving: suspendPolicy(byte): 1]
[JDI: Receiving: events(Events[]): ]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 9]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=7242]
[JDI: Receiving: signature(String): Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;]
[JDI: Receiving: status(int): 3]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 8]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=7242]
[JDI: Receiving: signature(String): Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;]
[JDI: Receiving: status(int): 3]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 2]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving: refTypeTag(byte): 1]
[JDI: Receiving: typeID(long): ref=7242]
[JDI: Receiving: signature(String): Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;]
[JDI: Receiving: status(int): 3]
[JDI: Handled Prepare Event for com.another.library.AbstractServiceRequestHandler]
[JDI: EventSet: SUSPEND_EVENT_THREAD]
[JDI: Looking up Class, signature='Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;', id=7242]
[JDI: Caching new ReferenceType, sig=Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;, id=7242]
[JDI: Sending Command(id=20794) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving Command(id=20794) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(4)-127.0.0.1]
[JDI: Event: ClassPrepareEvent in thread RMI TCP Connection(4)-127.0.0.1]
[JDI: Looking up Class, signature='Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;', id=7242]
[JDI: Sending Command(id=20796) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving Command(id=20796) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(4)-127.0.0.1]
[JDI: Event: ClassPrepareEvent in thread RMI TCP Connection(4)-127.0.0.1]
[JDI: Looking up Class, signature='Lcom/my/app/RetrieveCRSClassicContractEndpointHandler;', id=7242]
[JDI: Sending Command(id=20798) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving Command(id=20798) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(4)-127.0.0.1]
[JDI: Event: ClassPrepareEvent in thread RMI TCP Connection(4)-127.0.0.1]
[JDI: Handled Prepare Event for com.my.app.RetrieveCRSClassicContractEndpointHandler]
[JDI: Sending Command(id=20800) JDWP.ReferenceType.MethodsWithGeneric]
[JDI: Sending: refType(ReferenceTypeImpl): ref=7242]
[JDI: Receiving Command(id=20800) JDWP.ReferenceType.MethodsWithGeneric]
[JDI: Receiving: declared(MethodInfo[]): ]
[JDI: Receiving: declared[i](MethodInfo): ]
[JDI: Receiving: methodID(long): 748485344]
[JDI: Receiving: name(String): <init>]
[JDI: Receiving: signature(String): ()V]
[JDI: Receiving: genericSignature(String): ]
[JDI: Receiving: modBits(int): 1]
[JDI: Receiving: declared[i](MethodInfo): ]
[JDI: Receiving: methodID(long): 748485368]
[JDI: Receiving: name(String): validateRequest]
[JDI: Receiving: signature(String): (Lcom/my/app/IRetrieveCRSClassicContractRequest;Lcom/my/app/IRetrieveCRSClassicContractResponse;)Z]
[JDI: Receiving: genericSignature(String): ]
[JDI: Receiving: modBits(int): 1]
[JDI: Receiving: declared[i](MethodInfo): ]
[JDI: Receiving: methodID(long): 748485384]
[JDI: Receiving: name(String): handleTransaction]
[JDI: Receiving: signature(String): (Lcom/my/app/IRetrieveCRSClassicContractRequest;Lcom/my/app/IRetrieveCRSClassicContractResponse;)V]
...
[JDI: Sending Command(id=20820) JDWP.ReferenceType.SourceFile]
[JDI: Sending: refType(ReferenceTypeImpl): ref=7242]
[JDI: Receiving Command(id=20820) JDWP.ReferenceType.SourceFile]
[JDI: Receiving: sourceFile(String): RetrieveCRSClassicContractEndpointHandler.java]
[JDI: Sending Command(id=20822) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 2]
[JDI: Sending: suspendPolicy(byte): 2]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 7]
[JDI: Sending: loc(Location): com.my.app.RetrieveCRSClassicContractEndpointHandler:35]
[JDI: Receiving Command(id=20822) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 14]
[JDI: Sending Command(id=20824) JDWP.EventRequest.Set]
[JDI: Sending: eventKind(byte): 2]
[JDI: Sending: suspendPolicy(byte): 2]
[JDI: Sending: modifiers(Modifier[]): ]
[JDI: Sending: modifiers[i](Modifier): ]
[JDI: Sending: modKind(byte): 7]
[JDI: Sending: loc(Location): com.my.app.RetrieveCRSClassicContractEndpointHandler:61]
[JDI: Receiving Command(id=20824) JDWP.EventRequest.Set]
[JDI: Receiving: requestID(int): 15]
[JDI: Sending Command(id=20826) JDWP.ThreadReference.Resume]
[JDI: Sending: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving Command(id=20826) JDWP.ThreadReference.Resume]
[JDI: Receiving Command(id=6915) JDWP.Event.Composite]
[JDI: Receiving: suspendPolicy(byte): 0]
[JDI: Receiving: events(Events[]): ]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 8]
[JDI: Receiving: requestID(int): 2]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving: refTypeTag(byte): 2]
[JDI: Receiving: typeID(long): ref=7243]
[JDI: Receiving: signature(String): Lcom/my/app/core/repository/IRepository;]
[JDI: Receiving: status(int): 3]
[JDI: EventSet: SUSPEND_NONE]
...
[JDI: Sending Command(id=24396) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=3191]
[JDI: Receiving Command(id=24396) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(idle)]
[JDI: Event: ThreadDeathEvent in thread RMI TCP Connection(idle)]
[JDI: Receiving Command(id=8105) JDWP.Event.Composite]
[JDI: Receiving: suspendPolicy(byte): 0]
[JDI: Receiving: events(Events[]): ]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 7]
[JDI: Receiving: requestID(int): 5]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=1805]
[JDI: EventSet: SUSPEND_NONE]
[JDI: Sending Command(id=24399) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=1805]
[JDI: Receiving Command(id=24399) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(idle)]
[JDI: Event: ThreadDeathEvent in thread RMI TCP Connection(idle)]
2021-02-10 11:08:47,714 [ 204386] WARN - n.process.BaseOSProcessHandler - Process hasn't generated any output for a long time.
If it's a long-running mostly idle daemon process, consider overriding OSProcessHandler#readerOptions with 'BaseOutputReader.Options.forMostlySilentProcess()' to reduce CPU usage.
Command line: C:\Apps\apache-tomcat-8.5.56\bin\catalina.bat run
java.lang.Throwable: Process creation:
at com.intellij.execution.process.BaseOSProcessHandler.<init>(BaseOSProcessHandler.java:32)
at com.intellij.execution.process.OSProcessHandler.<init>(OSProcessHandler.java:91)
at com.intellij.execution.process.OSProcessHandler.<init>(OSProcessHandler.java:84)
at com.intellij.javaee.appServers.run.execution.LocalJavaeeServerProcessHandler.<init>(LocalJavaeeServerProcessHandler.java:40)
at com.intellij.javaee.appServers.run.execution.PatchedLocalState$ScriptBasedLocalJavaeeServerProcessHandler.<init>(PatchedLocalState.java:190)
at com.intellij.javaee.appServers.run.execution.PatchedLocalState.startJ2EEProcess(PatchedLocalState.java:98)
at com.intellij.javaee.appServers.run.execution.J2EEProcessHandlerWrapper.lambda$new$0(J2EEProcessHandlerWrapper.java:97)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:208)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:184)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
at java.base/java.lang.Thread.run(Thread.java:834)
[JDI: Receiving Command(id=8106) JDWP.Event.Composite]
[JDI: Receiving: suspendPolicy(byte): 0]
[JDI: Receiving: events(Events[]): ]
[JDI: Receiving: events[i](Events): ]
[JDI: Receiving: eventKind(byte): 7]
[JDI: Receiving: requestID(int): 5]
[JDI: Receiving: thread(ThreadReferenceImpl): ref=2559]
[JDI: EventSet: SUSPEND_NONE]
[JDI: Sending Command(id=24402) JDWP.ThreadReference.Name]
[JDI: Sending: thread(ThreadReferenceImpl): ref=2559]
[JDI: Receiving Command(id=24402) JDWP.ThreadReference.Name]
[JDI: Receiving: threadName(String): RMI TCP Connection(idle)]
[JDI: Event: ThreadDeathEvent in thread RMI TCP Connection(idle)]
[JDI: Sending Command(id=24404) JDWP.VirtualMachine.Resume]
[JDI: Receiving Command(id=24404) JDWP.VirtualMachine.Resume]
[JDI: Sending Command(id=24406) JDWP.VirtualMachine.Dispose]
[JDI: Receiving Command(id=24406) JDWP.VirtualMachine.Dispose]
[JDI: Target VM i/f closing event queues]
[JDI: Internal event handler exiting]
[JDI: Target VM interface thread exiting]
[JDI: Sending Command(id=24408) JDWP.VirtualMachine.Dispose]
shutdown on Thread[AWT-EventQueue-0,6,Idea Thread Group]
断点属性
【问题讨论】:
-
Minimal, Complete, and Verifiable example 能够重现和调查这个问题会很棒。库是在启用调试信息的情况下构建的吗?您还可以为 Java 调试器启用日志记录,以查看断点未获得复选标记的原因:intellij-support.jetbrains.com/hc/en-us/articles/207241125。
-
@CrazyCoder 1) 我如何知道库是在启用调试信息的情况下构建的? 2) 我在 IntelliJ 的日志记录
output.txt上看到了[JDI: EventSet: SUSPEND_NONE]。会是这样吗? 3)您可能想要更新链接的博客文章:我不得不使用这个技巧来实际重定向输出stackoverflow.com/a/1420981/9768291 -
@CrazyCoder 我用调试控制台日志的缩短版本更新了 OP。
-
你能显示断点属性吗?为它设置了什么暂停政策?
-
@CrazyCoder 用截图更新了 OP(在日志之后)
标签: java maven tomcat intellij-idea remote-debugging