microsoft / microsoft/vscode-java-debug

Can not step into method

未关闭
#1,523 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

ai-triaged bug
主要语言
TypeScript
星标
591
派生
429
平均合并
1 天 9 小时
30 天内合并 PR
19

描述

This was run on Linux.
VsCode Version: 1.95.2
language server version: 1.36.0
vscode-java-debug version: 0.58.1

  1. Clone https://github.com/eclipse-jdtls/eclipse.jdt.ls,
  2. start into debug mode
  3. Set debug at 164
    https://github.com/eclipse-jdtls/eclipse.jdt.ls/blob/f155e1fc90618b558899c3722606feccfc89e210/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/ProjectsManager.java#L155-L179
  4. And try to step into that method with "SHIFT" + step into shortcut and select that method

I have only the jdtls logs.

JDTLS Logs

[Error - 7:03:10 PM] Nov 12, 2024, 7:03:10 PM (java.util.stream.ReferencePipeline<P_IN,P_OUT>, java.util.stream.AbstractPipeline<?,P_OUT,?>, java.util.stream.StreamShape, int) {key=Ljava/util/stream/ReferencePipeline$21225;.(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Consumer;)V} [in <anonymous> [in ReferencePipeline$15.class [in java.util.stream [in <module:java.base>]]]] does not exist
(java.util.stream.ReferencePipeline<P_IN,P_OUT>, java.util.stream.AbstractPipeline<?,P_OUT,?>, java.util.stream.StreamShape, int) {key=Ljava/util/stream/ReferencePipeline$21225;.(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Consumer;)V} [in <anonymous> [in ReferencePipeline$15.class [in java.util.stream [in <module:java.base>]]]] does not exist
Java Model Exception: Error in Java Model (code 969): (java.util.stream.ReferencePipeline<P_IN,P_OUT>, java.util.stream.AbstractPipeline<?,P_OUT,?>, java.util.stream.StreamShape, int) {key=Ljava/util/stream/ReferencePipeline$21225;.(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Consumer;)V} [in <anonymous> [in ReferencePipeline$15.class [in java.util.stream [in <module:java.base>]]]] does not exist
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:546)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:589)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:292)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:278)
	at org.eclipse.jdt.internal.core.BinaryMethod.getParameterNames(BinaryMethod.java:287)
	at org.eclipse.jdt.ls.core.internal.handlers.InlayHintVisitor.getParameterNames(InlayHintVisitor.java:215)
	at org.eclipse.jdt.ls.core.internal.handlers.InlayHintVisitor.resolveInlayHints(InlayHintVisitor.java:165)
	at org.eclipse.jdt.ls.core.internal.handlers.InlayHintVisitor.visit(InlayHintVisitor.java:78)
	at org.eclipse.jdt.core.dom.ClassInstanceCreation.accept0(ClassInstanceCreation.java:293)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3360)
	at org.eclipse.jdt.core.dom.ReturnStatement.accept0(ReturnStatement.java:128)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3383)
	at org.eclipse.jdt.core.dom.Block.accept0(Block.java:128)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:3360)
	at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:676)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3383)
	at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:497)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3383)
	at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:257)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
	at org.eclipse.jdt.ls.core.internal.handlers.InlayHintsHandler.inlayHint(InlayHintsHandler.java:81)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$56(JDTLanguageServer.java:1189)
	at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:690)
	at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:527)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1458)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2034)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:189)

Nov 12, 2024 7:04:27 PM com.microsoft.java.debug.core.UsageDataSession recordResponse
WARNING: abnormal response

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

使用列出的 VS Code、语言服务器和 vscode-java-debug 版本重现 Linux 案例,从 ProjectsManager.java 第 155-179 行开始。阅读记录的 InlayHintVisitor 和 Java Model Exception 堆栈,然后跟踪失败的查找如何影响单步进入所选方法。完成的标准是:可以选择该方法并单步进入,同时不出现报告的 Java 模型错误。

由索引模型根据 Issue 内容生成。

评估

技术栈
java, vscode
领域
devtools
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
32/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。