有没有办法修改 pydevd_file_utils.PATHS_FROM_ECLIPSE_TO_PYTHON 值而不必修改该文件?

Joh*_*ohn 2 python eclipse pydev

我正在使用 pydev 插件来调试远程应用程序。

这个(远程)应用程序的文件结构与运行 Eclipse 的结构不同。当我从 Eclipse IDE 设置断点时,这会导致问题,因为 pydev 调试器服务器无法将文件的绝对路径与远程应用程序上的文件相匹配,因此断点未命中。

我不想硬编码 pydevd_file_utils.PATHS_FROM_ECLIPSE_TO_PYTHON 常量来启用文件路径转换。

你知道有什么方法可以在不改变文件的情况下修改这个值吗?

谢谢!

fro*_*cr4 6

有两种设置路径转换的方法:

  1. 使用环境变量,例如PATHS_FROM_ECLIPSE_TO_PYTHON映射从客户端到服务器端的路径。

该值是一个 json 字符串,其中list(list(str, str))包含:

PATHS_FROM_ECLIPSE_TO_PYTHON=[["c:/local/path", "/path/in/server"]]

请注意,您可以在您喜欢的任何位置设置环境变量(例如首选项页面Environment中的Python interpreter选项卡、操作系统本身、启动配置中等)。

  1. 使用pydevdAPI 在运行时从 python 进程设置跟踪:
from pydevd_file_utils import setup_client_server_paths

MY_PATHS_FROM_ECLIPSE_TO_PYTHON = [
    ('/home/user/local-project', '/remote/path/to/project'),
]
setup_client_server_paths(MY_PATHS_FROM_ECLIPSE_TO_PYTHON)

# At this point we could connect to the remote debugger client with:
import pydevd
pydevd.settrace("10.0.0.12")
Run Code Online (Sandbox Code Playgroud)

有关远程调试的更多信息,请参阅:https : //www.pydev.org/manual_adv_remote_debugger.html。

注意Window > PreferencesselectPyDev > Debug > Source Locator中设置的映射并没有真正映射到该环境变量,也没有真正映射到实际的调试器映射(这是一个单独的转换,它只转换在 Eclipse 本地找到的路径,并没有真正传递给调试器以远程命中断点) .

  • 在 2018 年,使用最新的 pydev 和 eclipse,我使用了所有答案,但无论我如何尝试,它们都不起作用,当我从 windows eclipse 设置断点时,远程 Linux 终端始终显示:pydev debugger:警告:试图向不存在的文件添加断点,然后添加当前目录+文件在我的Windows pc中的位置。所以它以“/root/project\C:eclipseproject\project”结尾,此时我用完了选项.. (2认同)
  • <!-- language: lang-python --> import os os.environ['PATHS_FROM_ECLIPSE_TO_PYTHON'] = r'[["C:\\Users\\WindowsКириллица\\src", "/home/frost-nzcr4/dst "]]' print('Before settrace') import pydevd: pydevd.settrace('192.168.1.116', port=5678) print('After settrace') # 这里自动停止。def main(): a = 5 # 在这里设置断点并停止。return a + 5 print(main()) 此代码适用于: * 主机:Debian、Python 3.5、pydevd 1.3.0 * 来宾:Windows 7(在 VirtualBox 上)、Python 3.6、Eclipse 4.7.3a、Pydev 6.4.1 (2认同)