【问题标题】:Only step through project files when debugging in VSCode with Java在 VSCode 中使用 Java 调试时仅单步执行项目文件
【发布时间】:2019-12-08 19:56:28
【问题描述】:

有很多问题询问如何跳过node_modules,但我希望跳过所有非项目java 文件,如Method.classInvocableHandlerMethod.class。这些不是节点模块,因此launch.json 中的常规设置不起作用。

当我在调试时单步执行代码时,我不得不将大部分时间花在某个系统库上,这让我很生气......

一个不符合我需要的示例问题是:Can't step through 'Just my code' when using VSCode?

有没有什么方法可以在 VSCode 和 Java 中配置调试以仅单步调试我在项目中创建的文件?

一个完美的设置是我包含文件夹用于调试,而不是像其他问题指定的那样排除它们。

【问题讨论】:

  • 也许可以使用 step over(F10) 跳过系统方法
  • @LeoZhu-MSFT 这就是我一直在使用的,它仍然带我进入系统类。
  • 你能解决这个问题吗?
  • @mikeo 恐怕不行 :(

标签: java debugging visual-studio-code


【解决方案1】:

终于有一个解决方案可以为我完成这项工作。我已经尝试将此规则添加到我的 settings.json 文件中并且它有效:

"java.debug.settings.stepping.skipClasses": ["$JDK", "org.junit.*", "junit.*", "java.util.*"]

感谢jdneo

【讨论】:

    【解决方案2】:

    实际上 VS Code Java Debugger 支持在单步执行时过滤库代码。方法是在launch.json中添加stepFilters config。

    下面是过滤常用jdk库的示例。

            {
                "type": "java",
                "name": "CodeLens (Launch) - Main",
                "request": "launch",
                "mainClass": "client.Main",
                "projectName": "kie-client",
                "stepFilters": {
                    "classNameFilters": [
                        "java.*",
                        "javax.*",
                        "com.sun.*",
                        "sun.*",
                        "sunw.*",
                        "org.omg.*"
                    ],
                    "skipSynthetics": false,
                    "skipStaticInitializers": false,
                    "skipConstructors": false
                }
            }
    

    【讨论】:

    • 不幸的是,这对我不起作用,我过去也尝试过。我的应用程序是一个 Spring Web 服务,当抛出异常(例如)并且我反复按 F10 时,我最终会像以前一样进入java.lang.reflect; 包中的Method.class 文件。不错的尝试!
    • 对我也不起作用。它仍然进入那些包。
    猜你喜欢
    • 2021-09-27
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多