按照官方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尝试使用被App Engine沙盒环境阻止的某些方法。我在python virtualenv中运行vscode,有什么线索吗?
答案 0 :(得分:1)
我的解决方案是使用PyCharm社区版的调试器,其类似的功能更强大的IDE和调试器可用于Python特定的调试。
答案 1 :(得分:0)
我试图找到一种可靠的方法来消除此错误,但是事实证明这非常困难。不过,这里有一些建议:
按照here的说明运行App Engine开发服务器时,请使用--threadsafe_override=default:false
标志。
必须从vscode(例如,通过任务)启动App Engine开发服务器,而不是从单独的终端窗口启动。
如果仍然出现错误,请停止调试器,终止任务并重新启动所有程序。
(在调试器正确命中断点之后,但奇怪的是,将调用栈设置为主线程而不是包含断点的线程,您需要在调用栈窗口中手动单击正确的线程。)