Skip to content
This repository has been archived by the owner on Aug 2, 2023. It is now read-only.

pydev debugger: warning: trying to add breakpoint to file that does not exist #965

Closed
gigi206 opened this issue Oct 29, 2018 · 10 comments
Closed

Comments

@gigi206
Copy link

gigi206 commented 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
Copy link
Member

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

@gigi206
Copy link
Author

gigi206 commented Nov 2, 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
Copy link
Contributor

fabioz commented Nov 2, 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
Copy link
Member

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
Copy link
Author

gigi206 commented Nov 2, 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
Copy link
Member

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

@karthiknadig
Copy link
Member

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

@Brazzelhuber
Copy link

The proposal of gigi206 does not work with me. , I receive the message "subprocess not defined".

@karthiknadig
Copy link
Member

@Brazzelhuber The issue you are seeing might be a different issue. Please file a separate bug with details.

@Brazzelhuber
Copy link

@karthiknadig: The problem was that I had to import subprocess. But when I did this, I received a message that my Python is not well compiled and a long list of Files, the address of which could not be found.
In the meanwhile, I fixed my problem with the following code in def _NormPaths(filename):
if str.find(abs_path,"c:") != -1:
i = abs_path.rfind("\")
new_abs_path = abs_path[i+1:]
k = real_path.rfind("\")
new_real_path = real_path[k+1:]
ind = real_path.find("c:")
my_path = real_path[:ind]
abs_path= my_path + new_abs_path
real_path = my_path + new_real_path
Note that the Linux part of the original real_path ist not the path where the test app resides, but the path from which it is called. I discovered that, when I inspected the file, which invokes the warning message. I called then the test app from that spot. The linux part of the original real_path was then /usr/local/lib ...

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants