Skip to content

Using "request": "launch" item in launch.json for debugging does not send pathMappings #3568

@karthiknadig

Description

@karthiknadig

@gigi206 commented on Mon Oct 29 2018

Environment data

  • PTVSD version: 4.1.4
  • OS and version: Windows with msys2
  • Python version : 3.6.6

Issue

I use VSCode with extension ms-python.python-2018.9.1 and I use python under msys2 (cygwin like) :

$ python
Python 3.6.6 (default, Jun 28 2018, 10:27:26)
[GCC 7.3.0] on msys
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.platform
'msys'
>>>

When I try to debug a python file I have the following message :

pydev debugger: warning: trying to add breakpoint to file that does not exist: /:\Users\gigi\Desktop\python\gigix.py (will have no effect)

From pydevd_file_utils.py file, if I replace L231 by the following line, it works :

        real_path = subprocess.getoutput("cygpath -a '{}'".format(filename))

https://github.com/Microsoft/ptvsd/blob/66d75d8c87c848d0f7b60102ac6a2a134c34eae4/ptvsd/_vendored/pydevd/pydevd_file_utils.py#L231

I opened this issue (fabioz/PyDev.Debugger#125) but it seems that it should open here...

Is it possible to add a test to determine the path under cygwin / msys2 ?


@karthiknadig commented on Thu Nov 01 2018

Can you give the launch configuration you are using for this?


@gigi206 commented on Fri Nov 02 2018

I use the default configuration :

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        },
        {
            "name": "Python: Attach",
            "type": "python",
            "request": "attach",
            "port": 5678,
            "host": "localhost"
        },
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "module": "enter-your-module-name-here",
            "console": "integratedTerminal"
        },
        {
            "name": "Python: Django",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "console": "integratedTerminal",
            "args": [
                "runserver",
                "--noreload",
                "--nothreading"
            ],
            "django": true
        },
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "app.py"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload"
            ],
            "jinja": true
        },
        {
            "name": "Python: Current File (External Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "externalTerminal"
        }
    ]
}

When I select Python: Current File (Integrated Terminal) and I start the debug, it works but I have the following message :

PS C:\Users\gigi\Desktop\python> cd 'c:\Users\gigi\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\gigi\Desktop\VSCode-Anywhere\Third-Party\MSYS2\install\usr\bin\python.exe' 'c:\Users\gigi\Desktop\VSCode-Anywhere\VSCode\extensions\ms-python.python-2018.9.1\pythonFiles\experimental\ptvsd_launcher.py' '49689' 'c:\Users\gigi\Desktop\python\gigix.py'
pydev debugger: warning: trying to add breakpoint to file that does not exist: /:\Users\gigi\Desktop\python\gigix.py (will have no effect)

If I use the following Python code :

import ptvsd

ptvsd.enable_attach()
ptvsd.wait_for_attach()
...

I start my python program and my program pause and listen to port 5678 :

TCP    0.0.0.0:5678           0.0.0.0:0              LISTENING

When I click on Python: Attach, my program finish with the following message :

pydev debugger: warning: trying to add breakpoint to file that does not exist: /:/Users/gigi/Desktop/python/gigix.py (will have no effect)

If I replace the line 231 like explain above, it works.


@fabioz commented on Fri Nov 02 2018

@karthiknadig this is actually a feature request (support cygwin in the debugger) -- the first fix needed is dealing with cygpaths as @gigi206 pointed, but there may be more to it (as a note, when/if cygwin support is added, we should also make sure there's a worker to test it in the ci).


@karthiknadig commented on Fri Nov 02 2018

I see. It might be worth a shot to try 'Attach' with pathMappings.
@gigi206 Add the following to your launch configuration. You may have to tweak the paths for this to work:

        {
            "name": "Python: Attach",
            "type": "python",
            "request": "attach",
            "port": 5678,
            "host": "localhost",
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "<set this value>"
                }
            ]
        },

@gigi206 commented on Fri Nov 02 2018

I have modified my launch.json file to :

"pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "/c/Users/gigi/Desktop/python/"
                }
            ]

It seems to work with attach request type but pathMappings seems not be allowed with launch request type.

I have the message pydev debugger: warning: trying to add breakpoint to file that does not exist: /:\Users\gigi\Desktop\python\gigix.py (will have no effect) with launch request type but it works.


@karthiknadig commented on Fri Nov 02 2018

@DonJayamanne Does 'launch' support pathMappings? On the debugger side we handle pathMappings for both launch and attach.


@karthiknadig commented on Wed Dec 05 2018

Issue moved to Microsoft/vscode-python #3567 via ZenHub

Metadata

Metadata

Labels

area-debuggingbugIssue identified by VS Code Team member as probable bugimportantIssue identified as high-priority

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions