如果 python 代码在 Maya 的脚本编辑器中运行,则 PyCharm 无法捕获断点



我正在通过Pycharm中的远程调试器为Maya调试Python代码。如果代码在命令行中运行,则远程调试器可以按预期捕获断点,但是如果Python代码在Maya的脚本编辑器内部运行,则无法执行此操作。

Pycharm远程调试器在Windows上运行时,Python代码在Ubuntu机器上运行。

i从包含脚本的目录上的Ubuntu机器上启动Maya。Pycharm的路径映射仅设置为"。对于包含相同Python脚本的Windows路径。你能帮我解决这个问题吗?非常感谢。

突破点仅供IDE捕获。Maya的脚本编辑器只是一个带有精美内容的文本框

好吧,我自己找到了答案。我以为问题与路径映射设置有关,但是现在事实证明它与如何调用Python代码有关。

pydevd与在Windows上运行的Pycharm的远程调试服务通信,必须知道整个Python脚本是什么,以便它可以将此信息传输到Pycharm,以便它找到源和相应的断点。当前,如果我们通过单击"加载脚本"按钮直接在Maya脚本编辑器中运行Python脚本是不可能的文件 - 它仍然是固有的,是线条的python解释器,仅以多行编辑器的形式为我们提供一些编辑的便利。

因此,关键是如何让Pydevd知道整个Python模块脚本是什么。这是通过通过import运行代码来完成的。毫不奇怪,导入的内容应该是整个模块Python代码。结果,使用

在玛雅人启动pydevd之后
import pydevd
pydevd.settrace('the.remote.debugger.IP', port=7720, stdoutToServer=True, stderrToServer=True)

,我们应该通过键入脚本编辑器

来调用我们要调试的python代码
import theBuggyModule

这样,单击蓝色"执行"图标后,脚本编辑器将停止响应,因为执行流现在转移到Pycharm的远程调试器。有时,pycharm仍然很难识别来源,因此可以捕获断点。在这种情况下,只需单击pycharm中新创建的选项卡中的"自动检测"链接,源文件应在列表中。这仅完成一次。请注意,仅当我的问题中描述的路径图设置时才有效。如果没有,您应该正确设置映射,以便Pycharm可以在运行远程调试器服务的远程计算机中找到源。

我知道我的答案不是完美的,因此欢迎任何(正确的)补充内容。只是不要说:"那是不可能的","您只能在本地调试","它不起作用"或类似的东西。谢谢。

最新更新