How to debug child Node.JS process in Visual Studio Code?

前端 未结 5 2430
别那么骄傲
别那么骄傲 2021-02-19 19:42

How to debug child Node.JS process in VS Code?
Here is the example of the code that I\'m trying to debug:

var spawn = require(\'child_process\').spawn;
var s         


        
相关标签:
5条回答
  • 2021-02-19 19:47

    In your launch configuration add "autoAttachChildProcesses": true like shown below

    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "autoAttachChildProcesses": true,
      "program": "${workspaceFolder}/index.js"
    }
    
    0 讨论(0)
  • 2021-02-19 19:48

    You can easily add a new launch configuration to launch.json that allows you to attach to a running node instance with a specific port:

    {
            "name": "Attach to Node",
            "type": "node",
            "address": "localhost",
            "port": 5870,
    }
    

    Just make sure you fork/spawn your node process with the --debug or --debug-brk argument.

    0 讨论(0)
  • 2021-02-19 19:51

    Just add this to your debugger configuration file

    {
      "type": "node",
      "request": "attach",
      "name": "Attach by Process ID",
      "processId": "${command:PickProcess}",
    }
    

    To attach a debugger to a Process Id. A list of processes will be prompted when you run this config., in which you can select process to which you want to attach debugger.

    0 讨论(0)
  • 2021-02-19 20:00

    Look for this npm module child-process-debug.

    I created 2 separate launch configurations in vscode:

    One for master process, other for child process

       {
            "name": "Attach",
            "type": "node",
            "request": "attach",
            "port": 5858,
            "address": "localhost",
            "restart": false,
            "sourceMaps": false,
            "outFiles": [],
            "localRoot": "${workspaceRoot}",
            "remoteRoot": null
        },
        {
            "name": "Attach child",
            "type": "node",
            "request": "attach",
            "port": 5859,
            "address": "localhost",
            "restart": false,
            "sourceMaps": false,
            "outFiles": [],
            "localRoot": "${workspaceRoot}",
            "remoteRoot": null
        }
    

    Workflow as follows:

    1. Start master node process with --debug command line switch $ node --debug master.js
    2. Attach to master.js node process using Attach via debug panel
    3. Place break point in the child.js process
    4. Quickly detach from main process and attach to child process using Attach child

    Fro debugging purposes, you may delay message sending between processes using setTimeout

    // master.js
    var child = child_process.fork(__dirname + './child.js')
    setTimeout(function() {
        child.send('...')
    }, 5000)
    
    0 讨论(0)
  • 2021-02-19 20:04

    Make this change in your launch.json, "autoAttachChildProcesses": true

    0 讨论(0)
提交回复
热议问题