配置两个远程系统之间的路径映射以使断点在 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 上):
将它们直接粘贴到 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'),
...
]
在启动您的应用程序之前将它们作为环境变量传递(例如 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 路径中的反斜杠。
希望这对遇到像我一样困难的人有所帮助。
几天来,我一直在尝试将 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 上):
将它们直接粘贴到
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'), ... ]
在启动您的应用程序之前将它们作为环境变量传递(例如
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 路径中的反斜杠。
希望这对遇到像我一样困难的人有所帮助。