谷歌云调试器不适用于Python AppEngine托管的虚拟机



正如今天在生产故障排除中宣布的那样,现在可以使用Python的Cloud Debugger了,据说我现在可以使用Python Debugger了。

我在GCE映像上运行AppEngine托管的虚拟机,所以我遵循了在计算引擎上设置Python的指南。我已经修改了我的Dockerfile以添加pip install google-python-cloud-debugger(我还尝试将库直接安装到我的app/lib中,它包含在我的sys.path中):

FROM gcr.io/google_appengine/python-compat
RUN pip install google-python-cloud-debugger
ADD . /app

然后我修改了我的main.py以启用调试器:

try:
  import googleclouddebugger
  googleclouddebugger.AttachDebugger()
except ImportError:
  pass

不幸的是,当我提交代码、运行gcloud preview app gen-repo-info-file并推送它时,我无法使用调试器。当我去https://console.developers.google.com/debug,它在右边加载我的github存储库,但我在左边的导航区看到一条错误消息:

调试不可用。您可以调试正在运行的Java应用程序应用程序引擎或计算引擎

有什么想法可能出了问题,或者如何调试调试器吗?

尽管其他线程确实提供了很多在调试中遵循常见最佳实践的机会,但该解决方案比我们任何一个人想象的都简单得多。根据文档,您看到的错误很可能是因为带有python的托管虚拟机还不是云调试器支持的平台。

然而,随着云调试器服务的发展,以及7日刚刚宣布使用python的云调试器,这种情况肯定会改变。

如果您发现遗漏了什么,并想让我们知道您和其他可能引发该问题的人对此感兴趣,请随时在云平台公共问题跟踪器中提交功能请求。

EDIT:虽然这个答案的线程包含有用的调试步骤,但问题的根本原因在我发布的另一个答案中有解释。

这里可能发生了两件事:

第一种情况是,作为普通用户运行的pip命令想要访问系统安装位置,但在没有root权限的情况下失败。尝试sudo pip install...pip install -t lib/ google-python-cloud-debugger

发生的第二件事是,你的代码捕获了一个ImportError,而只是passing。我以前作为一个讲python的人见过这种构造,老实说,如果我见过的话,那就是一把猎枪。pass能起到什么作用?如果采取这样的预防措施,错误日志会很快显示问题。

检查Python云调试器是否正确安装的最简单方法是尝试在Python交互式控制台中导入它:

docker run -i -t cdbgtest bin/bash
python
import googleclouddebugger
print googleclouddebugger.__version__

我的猜测是,在你的情况下,pip install google-python-cloud-debugger失败了。如果是这样的话,可能是因为pip过时了。用sudo easy_install pip安装pip可以解决这个问题。

相关内容

  • 没有找到相关文章

最新更新