代码之家  ›  专栏  ›  技术社区  ›  Julian Go

如何为应用程序引擎应用程序设置vscode Python调试器?

  •  7
  • Julian Go  · 技术社区  · 6 年前

    wiki 在使用断点启动或设置断点时,我不断遇到以下错误:

        /ptvsd/wrapper.py", line 423, in pydevd_request
        os.write(self.pipe_w, s.encode('utf8'))
      File "google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/stubs.py", line 40, in os_error_not_implemented
        raise OSError(errno.ENOSYS, 'Function not implemented')
    OSError: [Errno 38] Function not implemented
    

    应用程序仍在运行,但从未命中断点。似乎ptvsd正在尝试使用一些被appengine沙盒环境阻止的方法。我在用python虚拟机运行vscode,有什么线索吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Peter Herz    6 年前

    我的解决方案是使用PyCharm community edition的调试器,它类似于可能功能更强大的IDE和用于Python特定调试的调试器。

        2
  •  0
  •   Julian Go    6 年前

    我试图找到一个可靠的方法来消除这个错误,但事实证明这是相当困难的。以下是一些建议:

    • --threadsafe_override=default:false 运行appengine dev server时的标志,如所述 here

    • appengine dev服务器必须从vscode启动(例如通过任务),而不是单独的终端窗口。

    • 如果仍然出现错误,请停止调试器,终止任务并重新启动所有操作。

    (在调试器正确命中断点之后,奇怪的是,callstack被设置为主线程而不是包含断点的线程,您需要在callstack窗口中手动单击正确的线程。)