You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Run Django应用使用Google Cloud Debugger报No code found at line错误求解

解决方案

1. 调整快照打点位置

你当前打点的第30行是Django ViewSet的类属性赋值语句,这类代码属于模块加载阶段执行的逻辑,不会在请求运行时触发执行,Cloud Debugger快照默认只能捕获请求链路中的运行时代码,因此会判定对应行无执行代码。
你可以做如下修改尝试:

  • 把类属性queryset改为动态方法实现:
class UserViewSet(viewsets.ModelViewSet):
    # 注释掉原类属性写法
    # queryset = User.objects.all()
    serializer_class = UserSerializer
    
    def get_queryset(self):
        # 在这行打快照即可命中
        return User.objects.all()
  • 直接将快照打在ViewSet的内置方法(如list/retrieve/create)或者你自定义的业务方法内部行,不要打在类定义、类属性赋值的位置。

2. 对齐源码路径与行号

Cloud Debugger要求你上传的源码和容器内运行的源码路径、行号完全一致,你可以做如下校验:

  • 确认Docker构建过程中没有执行代码格式化、空行清理、注释删除等会改变行号的操作,你可以在Dockerfile中加入如下语句,构建时输出目标文件的内容,确认行号和你本地上传的源码完全匹配:
RUN cat -n /app/djangotest/urls.py | grep -A2 -B2 "UserViewSet"
  • 上传源码到Cloud Debugger时,务必在项目根目录(对应容器内/app目录的本地路径)执行上传操作,不要包含额外的上层目录层级,确保源码的相对路径和容器内的绝对路径完全对齐。

3. 调整调试代理配置

  • 升级容器内的google-cloud-debugger依赖到最新正式版,解决Python 3.9版本的兼容问题
  • 启动调试代理时显式指定工作目录和路径映射参数,示例如下:
gcloud debug source gen-repo-info-file --output-directory=/app/
python -m googleclouddebugger --working-dir=/app --module=djangotest --version=v1 main.py
  • 关闭代理的自动源码拉取功能,手动上传对应部署版本的源码包,避免版本不匹配问题。

4. 临时规避方案

如果上述配置调整后仍未解决,可使用临时方案命中调试点:

  • 在你需要调试的代码位置新增一行无业务影响的日志语句,将快照打在新增的日志行上,运行时执行到日志语句时即可触发快照捕获
  • 将Cloud Run的实例数临时调整为1,关闭自动扩缩容,避免快照命中到已经销毁的旧实例。

内容的提问来源于stack exchange,提问作者cputoaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:06