Google Cloud Debugger 不适用于 Python AppEngine 管理的虚拟机

Google Cloud Debugger not working for Python AppEngine Managed VMs

正如今天在 Production Troubleshooting with Cloud Debugger now available for Python 中宣布的那样,我现在应该可以使用 Python 调试器了。

我正在 运行在 GCE 映像上使用 AppEngine 管理的 VM,因此我正在遵循 Setting up Python on Compute Engine 的指南。我修改了我的 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 存储库,但我在左侧导航区域看到一条错误消息:

Debugging is not available. You can debug Java applications running on App Engine or Compute Engine

知道可能出了什么问题,或者如何调试调试器吗?

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

这里可能发生了两件事:

首先是您的 pip 命令,运行 作为普通用户,想要访问系统安装位置并且没有 root 权限失败。尝试 sudo pip install...pip install -t lib/ google-python-cloud-debugger.

发生的第二件事是您的代码正在捕获 ImportError 并且只是 passing。作为 python-speaker,我以前见过这种结构,老实说,如果我见过的话,那是一把猎枪。 pass 有什么用?如果您采取此类预防措施,错误日志会很快显示问题。

虽然其他线程确实提供了很多机会来遵循常见的调试最佳实践,但解决方案比我们想象的要简单得多。您看到的错误很可能是由于 python 的托管 VM 尚不是 Cloud Debugger according to the documentation 的支持平台。

然而,随着 Cloud Debugger 服务的增长,以及 python 的 Cloud Debugger 是 just announced on the 7th 的事实,这肯定有可能改变。

如果您发现缺少某些内容并想让我们知道您和其他可能会关注此问题的人对此感兴趣,请随时在 Cloud Platform Public Issue Tracker 中提交功能请求。

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

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

我猜你的情况 pip install google-python-cloud-debugger 失败了。如果是这样,可能是因为 pip 过时了。安装 pipsudo easy_install pip 将解决它。