57

When debugging in vscode I'd like to make some "blackboxing" and do not enter into code I didn't write. How can I do this?

Pavel L
  • 1,857
  • 3
  • 17
  • 23
  • Did we collectively stop calling it 'blackboxing' as of 2023 because of racial injustice? Seems like the word 'blackbox' isn't used in any of the developer tools at this point. – fivestones Jun 13 '23 at 06:54

9 Answers9

72

In your launch or attach debug task you can enter a

"skipfiles"

option which is

"An array of file or folder names, or path globs, to skip when debugging."

For example, from skipping node internals during debugging

"skipFiles": [
  "${workspaceFolder}/node_modules/**/*.js",
  "${workspaceFolder}/yourLibToSkip/**/*.js"
]

Also, there is a "magic reference" to the built-in core node modules you can use:

"skipFiles": [
  "<node_internals>/**/*.js"
]
Liam
  • 27,717
  • 28
  • 128
  • 190
Mark
  • 143,421
  • 24
  • 428
  • 436
  • 1
    could you kindly provide some example, I still cannot prevent entering to different dependencies folders inside of "node_modules" folder (i.e. ./node_modules/react-dom/lib/...), when debugging . part of launch task is `"skipFiles":"[./node_modules/**]"` – Pavel L Dec 03 '17 at 10:53
  • 1
    @d2048 See my edits to the answer and the included link. – Mark Dec 03 '17 at 15:29
  • This doesn't work for flutter. Can you please show us the full example for flutter please? This looks like for javascript – Tomas Baran Jun 20 '20 at 19:43
  • 20
    That "magic reference" doesn't work. I've downloaded VSCode today, debugged a TypeScript project, and am still ending up in `async_hooks.js`. – Dan Dascalescu Jul 01 '20 at 22:17
  • Did you try the ` "${workspaceRoot}/node_modules/**/*.js"` version as well? – Mark Jul 01 '20 at 22:27
  • 7
    Although `"skipFiles":["/**"]` works for debug sessions which are NOT attached, it doesn't seem to work in case of attaching a process. – Craig Hicks Jul 13 '20 at 17:38
  • Then how to add automatically generated files into skipfiles? – Abdulhakim Zeinu Feb 05 '21 at 15:24
  • Sometimes it needs to specify the file to ignore without 'js' extension example: "/internal/async_hooks", "/internal/inspector_async_hook" – Omtechguy Jun 15 '21 at 13:56
9

I was confused on where to put the setting, so just in case, if you want to skip both node_modules deps and node_internals files, your .vscode/launch.json file should look something like this:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Tests",
            "type": "node",
            "request": "launch",
            ...
            "skipFiles": ["<node_internals>/**", "${workspaceFolder}/node_modules/**/*.js"]
        }
    ]
}
Mauro Aguilar
  • 1,093
  • 13
  • 22
  • 1
    This was the answer that worked for me debugging a ReactJS app using Chrome on Windows. – ggariepy Oct 06 '21 at 16:14
  • I was trying with lots of other answers to this question and none of them worked. Turns out my problem was that I had skipFiles as a sibling to configurations instead of as a child. This fixed it for me. Thanks! – fivestones Jun 13 '23 at 06:52
3

Only this worked for me.

"debug.javascript.terminalOptions": {
    "skipFiles": [
        "<node_internals>/**"
    ]
}
Julian
  • 1,380
  • 12
  • 28
1

Just to amplify on Mauro Aguilar's correct answer, here are the complete contents of my launch.json file. Note that I am debugging a ReactJS app (circa 2021) with VS Code 1.60.2 on Windows 10 using Chrome v.94. If you're using a Linux machine or a Mac, YMMV.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "pwa-chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:3000",
            "webRoot": "${workspaceFolder}",
            "skipFiles": ["<node_internals>/**/*.js", "${workspaceFolder}/node_modules/**/*.js"]
        },
    ]
}
Dharman
  • 30,962
  • 25
  • 85
  • 135
ggariepy
  • 1,027
  • 8
  • 8
0

this is my launch.json file (it works for me):

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "edge",
            "request": "launch",
            "name": "Launch Edge against localhost",
            "url": "http://localhost:4200",
            "webRoot": "${workspaceFolder}",
            "skipFiles": [
              "${workspaceFolder}/node_modules/**/*.js"
            ]
        }
    ]
}
HK boy
  • 1,398
  • 11
  • 17
  • 25
0

For flutter apps, add to your user settings the following:

"debugExternalPackageLibraries": false,
"dart.debugSdkLibraries": false,
Tomas Baran
  • 1,570
  • 2
  • 20
  • 37
0

For some reason, I've needed to add both types of skip file entries,

  "skipFiles": [
    "${workspaceFolder}/node_modules/**/*.js",
    "<node_internals>/**"
  ],

This seems to have resolved the issue.

Mike S.
  • 2,048
  • 1
  • 32
  • 55
0
"dart.debugExternalLibraries": false,
"dart.debugSdkLibraries": false,

If I add this, the debug stop after a few steps into

Andre Nevares
  • 711
  • 6
  • 21
0

For Typescript built with Webpack, I had to put the exclusions in launch.json - putting them in settings.json/terminalOptions had no effect.

Also, I had to exclude the pattern of the generated files, not the source files. In my case it looks like:

"skipFiles": [
    "<node_internals>/**",
    "**/vendors-*",
],
Dirigible
  • 1,749
  • 16
  • 11