恐雀开瓶 2024-07-10 16:45 采纳率: 0%
浏览 133

vscode 在java调试的时候,如何只调试,自己写的代码,而不进入.class文件

问题遇到的现象和发生背景

vscode配置好java环境之后调试的时候为什么,总是进入库代码,就像我发的图片那样,进入到.class文件。怎么配置才能做到,调试的时候只调试,自己写的代码?求解答。

操作环境、软件版本等信息 win11,

img

img

尝试过的解决方法

我尝试过在setting.json上加入常用的第三方库,试着去过滤掉,但是没有什么用,到最后代码结束的时候,还是会进入.class文件,下面是完整的settings.json代码

{
    "cmake.configureOnOpen": true,
    "cmake.options.advanced": {
        "build": {
            "statusBarVisibility": "visible"
        },
        "launch": {
            "statusBarVisibility": "visible"
        },
        "debug": {
            "statusBarVisibility": "visible"
        }
    },
    "cmake.options.statusBarVisibility": "visible",
    "files.autoSave": "afterDelay",
    "workbench.list.smoothScrolling": true,
    "editor.cursorSmoothCaretAnimation": "on",
    "editor.smoothScrolling": true,
    "editor.formatOnPaste": true,
    "editor.formatOnType": true,
    "editor.wordWrap": "wordWrapColumn",
    "editor.guides.bracketPairs": "active",
    //"editor.bracketPairColorization.enabled": true, (此设置vscode在较新版本已默认开启)
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    "editor.acceptSuggestionOnEnter": "smart",
    "editor.suggestSelection": "first",
    "window.dialogStyle": "custom",
    "debug.showBreakpointsInOverviewRuler": true,
    "editor.cursorWidth": 4,
    "typescript.locale": "zh-CN",
    "terminal.integrated.cursorStyle": "line",
    "terminal.integrated.cursorWidth": 4,
    "terminal.integrated.cursorStyleInactive": "line",
    "terminal.integrated.cursorBlinking": true,
    "workbench.settings.applyToAllProfiles": [
        "editor.mouseWheelZoom",
        "editor.codeLensFontFamily",
        "beautify.language",
        "c-cpp-compile-run.run-in-external-terminal",
        "files.autoGuessEncoding",
        "java.debug.settings.forceBuildBeforeLaunch",
        "terminal.integrated.fontSize",
        "terminal.integrated.fontFamily",
        "terminal.integrated.fontWeight",
        "terminal.integrated.mouseWheelZoom",
        "terminal.integrated.smoothScrolling",
        "terminal.integrated.unicodeVersion",
        "editor.cursorBlinking",
        "editor.cursorSmoothCaretAnimation",
        "workbench.reduceMotion",
        "prettier.arrowParens",
        "prettier.bracketSpacing",
        "prettier.embeddedLanguageFormatting",
        "prettier.endOfLine",
        "prettier.tabWidth",
        "editor.wordWrapColumn",
        "editor.wordWrap",
        "editor.fontSize",
        "files.autoSave",
        "editor.fontFamily",
        "editor.tabSize",
        "editor.renderWhitespace",
        "editor.cursorStyle",
        "editor.insertSpaces",
        "editor.autoClosingBrackets",
        "editor.formatOnSave",
        "accessibility.voice.speechLanguage",
        "WisenTranslate.disableHover",
        "editor.guides.bracketPairs",
        "editor.guides.bracketPairsHorizontal",
        "editor.bracketPairColorization.enabled",
        "terminal.explorerKind",
        "editor.inlayHints.enabled",
        "editor.inlayHints.fontFamily",
        "c-cpp-compile-run.cpp-compiler",
        "java.debug.settings.debugSupportOnDecompiledSource",
        "java.debug.settings.stepping.skipClasses"
    ],
    "explorer.confirmDragAndDrop": false,
    "terminal.explorerKind": "external",
    "[jsonc]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "editor.fontFamily": "jetbrains mono",
    "vsintellicode.modify.editor.suggestSelection": "choseToUpdateConfiguration",
    "editor.fontSize": 17,
    "editor.codeLensFontFamily": "jetbrains mono",
    "c-cpp-compile-run.run-in-external-terminal": true,
    "chatgpt.lang": "cn",
    "markdown-preview-enhanced.previewTheme": "atom-material.css",
    "markdown-preview-enhanced.codeBlockTheme": "okaidia.css",
    "markdown-preview-enhanced.revealjsTheme": "night.css",
    "todo-tree.general.tags": [
        "BUG",
        "HACK",
        "FIXME",
        "TODO",
        "XXX",
        "attention"
    ],
    "todo-tree.highlights.useColourScheme": true,
    "todo-tree.regex.regexCaseSensitive": false,
    "editor.minimap.enabled": false,
    "files.autoGuessEncoding": true,
    "redhat.telemetry.enabled": true,
    "editor.mouseWheelZoom": true,
    "terminal.integrated.fontFamily": "JetBrains Mono",
    "terminal.integrated.ignoreBracketedPasteMode": true,
    "terminal.integrated.macOptionClickForcesSelection": true,
    "terminal.integrated.mouseWheelZoom": true,
    "terminal.integrated.smoothScrolling": true,
    "workbench.reduceMotion": "off",
    "editor.cursorBlinking": "smooth",
    "prettier.tabWidth": 4,
    "editor.wordWrapColumn": 120,
    "[json]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "tabnine.experimentalAutoImports": true,
    "terminal.integrated.enableMultiLinePasteWarning": false,
    "accessibility.voice.speechLanguage": "zh-CN",
    "editor.parameterHints.enabled": false,
    "git.ignoreMissingGitWarning": true,
    "editor.bracketPairColorization.independentColorPoolPerBracketType": true,
    "terminal.integrated.defaultProfile.windows": "Command Prompt",
    "code-runner.clearPreviousOutput": true,
    "cSpell.ignoreWords": ["KHTML", "lxml"],
    "cmake.showOptionsMovedNotification": false,
    "local-history.absolute": true,
    "local-history.maxDisplay": 50,
    "settingsSync.ignoredSettings": [],
    "editor.inlayHints.fontFamily": "JetBrains Mono",
    "editor.inlayHints.padding": true,
    "workbench.colorTheme": "JetBrains Darcula Theme",
    "editor.experimentalInlineEdit.enabled": true,
    "editor.inlayHints.enabled": "off",
    "C_Cpp.default.compilerPath": "D:\\mingw64\\bin\\gcc.exe",
    "c-cpp-compile-run.c-compiler": "D:\\mingw64\\bin\\gcc.exe",
    "c-cpp-compile-run.cpp-compiler": "D:\\mingw64\\bin\\gcc.exe",
    "workbench.iconTheme": "vscode-jetbrains-icon-theme-2023-light",
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter"
    },
    "editor.formatOnSave": true,
    "terminal.integrated.fontSize": 15,
    "java.debug.settings.stepping.skipClasses": [
    
        // Java标准库
        "java.*",
        "javax.*",
        "com.sun.*",
        "sun.*",

        // 常见的第三方库
        "org.apache.*",
        "org.springframework.*",
        "org.hibernate.*",
        "com.google.*",
        "org.slf4j.*",
        "com.fasterxml.jackson.*",
        "io.reactivex.*",
        "org.reactivestreams.*",
        "com.fasterxml.*",
        "com.zaxxer.*",
        "com.github.*",
        "org.mockito.*",
        "org.junit.*",
        "org.hamcrest.*",
        "org.testng.*",
        "com.thoughtworks.xstream.*",
        "org.codehaus.*",
        "com.esotericsoftware.*",
        "org.javassist.*",
        "org.aspectj.*",
        "org.easymock.*",
        "org.mockito.*",
        "org.mockito.invocation.*",
        "org.mockito.stubbing.*",
        "org.mockito.internal.*",
        "org.mockito.exceptions.*",
        "org.mockito.verification.*",
        "org.mockito.runners.*",
        "org.mockito.annotations.*",
        "org.mockito.internal.creation.*",
        "org.mockito.internal.configuration.*",
        "org.mockito.internal.verification.*",
        "org.mockito.internal.stubbing.*",
        "org.mockito.internal.matchers.*",
        "org.mockito.internal.util.*",
        "org.mockito.internal.creation.classloading.*",
        "org.mockito.internal.creation.bytebuddy.*",
        "org.mockito.internal.creation.cglib.*",
        "org.mockito.internal.creation.java.*",
        "org.mockito.internal.progress.*",
        "org.mockito.internal.handler.*",
        "org.mockito.internal.verification.api.*",
        "org.mockito.internal.verification.timestamper.*",
        "org.mockito.internal.verification.nostrict.*",
        "org.mockito.internal.verification.api.recording.*",
        "org.mockito.internal.verification.api.callsequence.*",
        "org.mockito.internal.verification.api.voidable.*",
        "org.mockito.internal.verification.api.chain.*",
        "org.mockito.internal.verification.api.times.*",
        "org.mockito.internal.verification.api.callsequence.impl.*",
        "org.mockito.internal.verification.api.recording.impl.*",
        "org.mockito.internal.verification.api.voidable.impl.*",
        "org.mockito.internal.verification.api.chain.impl.*",
        "org.mockito.internal.verification.api.times.impl.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.*",
        "org.mockito.internal.verification.api.chain.impl.recording.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.*",
        "org.mockito.internal.verification.api.chain.impl.times.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.recording.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.voidable.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.times.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.callsequence.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.voidable.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.times.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.callsequence.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.recording.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.times.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.callsequence.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.recording.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.voidable.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.recording.impl.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.voidable.impl.*",
        "org.mockito.internal.verification.api.chain.impl.callsequence.impl.times.impl.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.callsequence.impl.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.voidable.impl.*",
        "org.mockito.internal.verification.api.chain.impl.recording.impl.times.impl.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.callsequence.impl.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.recording.impl.*",
        "org.mockito.internal.verification.api.chain.impl.voidable.impl.times.impl.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.callsequence.impl.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.recording.impl.*",
        "org.mockito.internal.verification.api.chain.impl.times.impl.voidable.impl.*"
    ]
}




我想要达到的结果:

怎么配置才能做到,调试的时候只调试,自己写的代码?而不进入.class文件

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-10 16:45
    关注

    引自免费微信小程序:皆我百晓生

    在VSCode中调试Java程序时,如果你希望调试你自己的代码而不进入第三方库或JDK内部的.class文件,你可以通过配置Java的调试选项来实现。下面是一些步骤和配置建议,帮助你达到这个目标:

    1. 配置Java Debug设置:

      • 打开VSCode的设置(File -> Preferences -> Settings 或使用快捷键Ctrl+,)。
      • 在搜索框中输入“Java Debug”。
      • 在Java Debug配置中,找到关于“Stepping”或“Debugging”的部分。
    2. 设置排除的类路径: 在你的settings.json文件中,为Java调试配置添加或修改以下设置:

    {
        "java.debug.settings.stepping.skipClasses": [
            "java.*", "javax.*", "com.sun.*", "sun.*",
            // 其他你想要跳过的类或包路径,例如常见的第三方库路径等。
        ]
    }
    

    这个设置告诉调试器在调试时跳过指定的包或类。这样,当你进行调试时,调试器就不会进入JDK或第三方库的内部代码。 3. 确保你的项目配置正确: 确保你的Java项目配置正确,并且正在使用正确的JDK版本。错误的配置可能会导致调试器进入不正确的代码。 4. 重启调试会话: 在修改了设置后,确保重启你的调试会话以应用新的配置。 5. 附加注意: 有时候,即使设置了跳过某些类,VSCode仍然可能进入你指定的类或包中的某些方法(特别是静态初始化块或静态方法)。这是因为在这些情况下,JVM可能会自动调用这些方法。为了完全避免这种情况,你可能需要更深入地调整你的JVM参数或使用更高级的配置选项。但通常,通过设置skipClasses可以很好地解决大多数问题。

    总之,通过上述步骤和配置,你应该能够在VSCode中调试Java程序时只调试自己的代码而不进入.class文件。如果仍然遇到问题,可能需要检查你的具体项目配置或查找更具体的解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月10日