配置两个远程系统之间的路径映射以使断点在 PyDev 中起作用

Configure path mappings between two remote system to make breakpoints work in PyDev

几天来,我一直在尝试将 PyDev 的远程调试功能添加到 运行,但没有成功。我的主要问题(目前只有一个)是我不知道如何正确地将远程路径映射到我的本地路径,反之亦然以使断点起作用。我已通读 these instructions 并浏览了一些 Q/A 此处关于该主题的内容。我想知道使这些断点正常运行的确切步骤。

在我的例子中,它是一个 Python 应用程序 运行ning 在远程 Debian 9 系统上,我想从我的本地 Windows 7 主机调试 Eclipse 中的 PyDev 6.4.3 . 在这种情况下,宿主是什么,目标是什么?我必须在 Windows 或 Linux 机器上配置我的路径映射吗?或者两者兼而有之?

我尝试在 Preferences/PyDev/Debug/Source Locator 下的 Eclipse 中配置它们。我在 Windows 和 Linux 上都将它们设置为环境变量 PATHS_FROM_ECLIPSE_TO_PYTHON。这些都没有帮助,在我的 Linux 机器上我只收到消息

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

我运行没有选择,真的很想知道这样做的正确方法是什么。感谢任何帮助。

所以,我终于找到了适合我的设置的正确配置。总结一下:

  • 我要调试的应用程序在安装了 pydevd 的 Linux 机器上运行 (pip install pydevd)
  • 我的 Eclipse+PyDev 设置是 运行 我的 Windows 7 工作站
  • 调试服务器在 Eclipse 中 运行 并侦听它的默认端口 5678

显然必须在目标机器上配置路径映射(托管您要调试的应用程序的机器,所以在我的例子中这将是 Linux 机器)。这可以通过两种方式完成(在 Linux 上):

  1. 将它们直接粘贴到 pydevd_file_utils.py(在我的 Linux 系统中,它位于 /usr/local/lib/python2.7/dist-packages/) 形式为:

    PATHS_FROM_ECLIPSE_TO_PYTHON = [ ('Remote Path 1', 'Local Path 1'), ('Remote Path 2', 'Local Path 2'), ... ]

  2. 在启动您的应用程序之前将它们作为环境变量传递(例如 export PATHS_FROM_ECLIPSE_TO_PYTHON='[["Remote Path 1", "Local Path 1"], ["Remote Path 2", "Local Path 2"], ...]'

在我的例子中,远程路径将是我的Windows机器上的项目路径(例如C:\Users\workspace\project\)和本地路径 我的 Linux 主机上的那个 (/home/user/project/)。请注意我必须添加到路径的尾部反斜杠,否则 PyDev 会将路径转换为类似 /home/user/project\file.py 的内容,这会导致未知文件。因此,我还必须转义 Windows 路径中的反斜杠。

希望这对遇到像我一样困难的人有所帮助。