Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用VSCode'调试在Docker容器中运行的Java应用程序;s的Java调试器_Docker_Visual Studio Code - Fatal编程技术网

如何使用VSCode'调试在Docker容器中运行的Java应用程序;s的Java调试器

如何使用VSCode'调试在Docker容器中运行的Java应用程序;s的Java调试器,docker,visual-studio-code,Docker,Visual Studio Code,我有一个Java应用程序(.tar)安装到容器上。容器的入口点启动该应用程序 Dockerfile(后端文件夹作为卷装入映像) entrypoint.sh java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xmx2048M -jar backend.jar 现在我想使用VSCode的调试器调试正在运行的应用程序。根据VSCode官方文档()的规定,这可以通过命令面板和命令调试器:attach t

我有一个Java应用程序(
.tar
)安装到容器上。容器的
入口点启动该应用程序

Dockerfile
(后端文件夹作为卷装入映像)

entrypoint.sh

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xmx2048M -jar backend.jar
现在我想使用VSCode的调试器调试正在运行的应用程序。根据VSCode官方文档()的规定,这可以通过命令面板和命令
调试器:attach to Node.js process
轻松完成

但在他们的示例中,他们使用Node.js服务器。然而,在我的容器中,没有可以附加调试器的Node.js进程,也找不到适用于Java Spring应用程序的适当命令那么如何将VSCode的Java调试器附加到已经在Docker容器中运行的Java应用程序?

在其文档()的另一个地方,他们陈述了以下内容:

Docker扩展目前支持调试Docker容器中的Node.js、Python和.NET核心应用程序

这里没有提到Java,但在另一个地方()他们清楚地谈到了Java应用程序:

例如,将其添加到.devcontainer/devcontainer.json将设置Java主路径: “设置”:{“java.home”:“/docker java home”}


如果您像这样设置run命令

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar App.jar 
(或者不管你怎么称呼它,重要的是选项)


然后让docker容器暴露该端口。我通常使用docker compose文件来实现这一点,因此,如果像这样设置run命令,您可以在运行时轻松地映射您喜欢的端口

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar App.jar 
(或者不管你怎么称呼它,重要的是选项)


然后让docker容器暴露该端口。我通常使用docker compose文件来实现这一点,因此您可以轻松地在运行时以自己喜欢的方式映射端口

将tar文件复制到容器中,然后使用启动命令将其解压script@Ashok这如何帮助我调试应用程序?基本上,您的要求是希望在容器中执行java?将tar文件复制到容器中,然后使用启动命令将其解压script@Ashok这对我调试应用程序有什么帮助?基本上,你的要求是要在容器中执行java?是的,我的设置就是这样的(我更新了我的问题)。但是我如何才能将VSCode Java调试器附加到该JVM?哦,好的,有一个支持附加的扩展名“debugger for Java”。我该如何做?左键单击插件工具栏(看起来像拼图),然后搜索它。是的,这正是我的设置方式(我更新了我的问题)。但是我怎样才能将VSCode Java调试器附加到那个JVM上呢?哦,好的,有一个扩展“debugger for Java”支持附加。我该怎么做呢?左键单击插件工具栏(看起来像拼图),然后搜索它。