2

我一直在尝试 在 Google Compute Engine 上为 Java 应用程序设置 Stackdriver Debugger,但遇到了 Stackdriver Debug 问题。

我正在.war从一个单独的构建服务器构建我的文件,然后将它部署到我的 GCE 服务器。我通过 将代理添加到启动命令中/etc/defaults,我的应用程序出现在https://console.cloud.google.com/debug控制面板中。我在运行命令中设置的版本与 source-context(s).json 文件中显示的版本相匹配。

但是,当我单击打开应用程序时,我会看到以下消息

已部署的应用程序未提供源版本信息

我将应用的 git repo 连接为镜像的云存储库,并且可以在 Stackdriver Debug 页面的侧边栏中浏览源文件。但是,如果我浏览到一个文件并添加一个断点,我会收到错误消息“在可执行文件中找不到文件”。

我已经运行了这个gcloud preview app gen-repo-info-file命令,它创建了两个基本json文件来存储我的 git repo 和修订。它应该做其他事情吗?

我尝试过使用正常模式和提取模式运行码头。如果我让jetty先解压war文件,可以在WEB-INF/classes目录下看到source-context.json文件。

我错过了什么?

4

2 回答 2

1

https://github.com/GoogleCloudPlatform/cloud-debug-java#extra-classpath提到

您可以更新显示您的 WEB-INF/class 目录的 agentPath。

-agentpath:/opt/cdbg/cdbg_java_agent.so=--cdbg_extra_class_path=/opt/tomcat/webapps/myapp/WEB-INF/classes

对于多个类路径:

-agentpath:/opt/cdbg/cdbg_java_agent.so=--cdbg_extra_class_path=/opt/tomcat/webapps/myapp/WEB-INF/classes:/another/path/with/classes
于 2018-10-25T22:22:44.137 回答
0

这里发生了几件事。

首先,听起来您正在使用 gen-repo-info-file 做正确的事情。调试器代理应该从 WEB-INF/classes 目录中获取 json 文件。

调试器使用模糊匹配来查找源文件,因此只要 .java 文件的名称与可执行文件中的文件匹配,就不会出现该错误。

鉴于您的问题中的信息,最有可能的情况是将调试器附加到启动器进程,而不是您的实际应用程序。不过,如果没有更多细节,我不能绝对证实这一点。

如果您通过 cdbg-feedback@google.com 向我们发送更多详细信息,我们可以更仔细地查看您的案例,看看我们是否能够准确了解正在发生的事情,并可能改进我们的文档,因为听起来您非常密切地关注文档。

于 2016-07-07T17:52:26.033 回答