raix / vscode-perl-debug

LOOKING FOR MAINTAINERS. Perl debugger extension for visual studio code
MIT License
63 stars 36 forks source link

Enable remote debugging for Docker by providing a new configuration option: host #152

Open Nowaker opened 4 years ago

Nowaker commented 4 years ago

Docker containers run in docker0 network. Docker containers can reach the host by its IP, e.g. 172.17.0.1, but cannot reach any processes that listen on localhost (127.0.0.1) from host's perspective. And because the remote debugger started by this extension is hard-coded to listen on 127.0.0.1, it's not possible for a Perl process in Docker container to connect to the debugger port.

See: https://github.com/raix/vscode-perl-debug/blob/95c89557811b47e7ac64abed0e9661bfdcfcf405/src/attachable.ts#L85

Feature requests:

  1. Add new configuration option host in launch.json where we're allowed to specify the host for the remote debugger to listen on, e.g. 172.17.0.5 or 0.0.0.0.

Example:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "perl",
      "request": "launch",
      "name": "Perl-Debug",
      "console": "remote",
      "port": 9000,
      "host": "172.17.0.5",
      "program": "${workspaceFolder}/${relativeFile}",
      "stopOnEntry": false,
      "reloadModules": false
    }
  ]
}

My experience:

After replacing localhost in the code with 0.0.0.0, the process inside Docker container successfully connected to the remote debugger.

Platform: linux
Waiting for remote debugger to connect on port "9000"
Remote debugger at "172.24.0.4:46478" connected at port 9000.

Loading DB routines from perl5db.pl version 1.49
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.