谷歌云 - Stackdriver调试报告"在可执行文件中找不到文件"为GCE Jetty战争

时间:2016-07-06 21:01:27

标签: google-compute-engine google-cloud-platform stackdriver

我一直在尝试关注 Setting Up Stackdriver Debugger for Java applications on Google Compute Engine,但遇到了Stackdriver Debug的问题。

我从单独的构建服务器构建我的.war文件,然后将其部署到我的GCE服务器。我通过/etc/defaults将代理添加到了启动命令,我的应用程序显示在https://console.cloud.google.com/debug控制面板中。我在run命令中设置的版本与源上下文.json文件中显示的版本匹配。

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

  

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

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

我运行了gcloud preview app gen-repo-info-file命令,该命令创建了两个存储我的git repo和revision的基本json文件。它应该做什么吗?

我尝试使用普通模式和提取模式运行jetty。如果我有jetty首先提取war文件,我可以在WEB-INF / classes目录中看到source-context.json文件。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

这里有几件事情。

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

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

在您的问题中给出信息的最可能的情况是您将调试器附加到启动程序进程,而不是您的实际应用程序。但是,如果没有进一步的细节,我无法确定这一点。

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

答案 1 :(得分:0)

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