IntelliJ IDEA Tutorials 开发工具

使用 IntelliJ IDEA 在 Docker 中调试 Java 应用程序

Docker 集成允许您直接从 IntelliJ IDEA 构建或拉出 Docker 镜像,并且运行 Docker 容器。您可以使用特殊运行配置在 Docker 容器中运行应用程序,并查看它在与生产相同的环境中的行为方式。

 但调试呢?

从 2019.1 版起,您可以直接从 IntelliJ IDEA 调试运行在 Docker 容器中的 Java 应用程序。运行在 Docker 容器中的应用程序作为远程应用程序对待,因此可以将调试器附加其上。IntelliJ IDEA 包含用于远程调试的特殊运行/调试配置类型。

创建一个远程调试配置并为其添加一个特殊的启动前 (Before launch) 任务:调试前启动 Docker (Launch Docker before debug),它定义了您希望运行和附加到的 Docker 配置。

现在,每次运行远程调试配置时,它都将根据 Docker 运行配置设置运行容器,然后将调试器附加到容器中的应用程序。当它到达断点时,调试器将停止并让您分析应用程序的当前状态,就像正常的调试会话一样。

这可以用于任何类型的 Docker 运行配置:无论是基于构建的 Docker 镜像、Dockerfile 还是 Docker Compose 文件。

有关在 Docker 容器中远程调试的更多信息以及带示例的教程,请参阅 IntelliJ IDEA 文档

这种改进增强了 Docker 集成,适用于经常在工作流程中使用容器的开发人员。

从 IntelliJ IDEA 旗舰版 2019.1 起提供此功能。

注意:在 Docker 容器中远程调试目前已经为 Java 8 及更早版本实现。

 

将在不远的将来支持 Java 9+。

请在下面的意见中告诉我们您对此功能的看法。如果您有改进建议,请在YouTrack 中投票。

关注我们的官方微博、微信公众号,和中文博客,以及 Twitter:@intellijidea 了解更多信息。

祝您开发愉快!

原文发表于2019年4月30日,作者Alexey Zhebel

Discover more

网络研讨会视频:快速上手,使用 Kotlin 把支付宝小程序装进自己的 App

写一个 Android App 或许不难,但企业对于移动应用的要求愈来愈高,不只要求开发速度、稳定度、质量等,甚至希望能具备动态扩展的架构设计、在 App 中自启动小程序。面向这些需求,若是有好的开发工具及平台的支持,将可以大大降低开发及运维的成本。本次网络研讨会特别邀请到支付宝高级无线开发工程师温盛章为大家演示用 Kotlin 开发移动应用,并集成 mPaaS 让 App 具备小程序能力。 (本次视频已同步发表至 B 站) 主題分享 本次分享共有三个关键字: Kotlin 、 小程序 、 mPaaS 。温盛章首先从用户、开发、技术、平台等四大视角,向大家说明小程序是什么?简单来说,小程序就是一种拥有完整生命周期、应用间相互隔离、独立运行于宿主应用内的应用。而小程序从工作型 App、平台型 App、超级 App 到新阶段一路的演化历程,目前已经可以有接近 Native 的体验和顺畅、也可以有 H5 的快捷发布的优势。 对小程序有概念后,温盛章就以 Android Studio 演示如何在一个 Mobile App 里,以 Kotlin 撰写 Mobile App 的代码,并接上 mPaaS 平台,让 App 有自启动小程序的能力。要接入 mPaaS,首先需在 Android Studio 里安装 mPaaS 插件,并到阿里云的 mPaaS 后台创建一个新建用。接着,在 Andro

网络研讨会视频:重构还是重写?聊聊 Java 代码臭味与重构技巧

在重构一书里,将有问题的代码称作代码臭味(Code Smells,有些翻译成”代码异味”、”代码坏味道”),表示这份代码可能有设计上的问题、或是因为写得太凌乱而难以维护。总得来说,这份代码需要通过重构来改善。这样的场景往往是许多开发者的每日工作,因此,判定一位开发者的等级,往往就是看他的重构技巧是否熟练。本次网路研讨会特别邀请到 Odd-e 敏捷教练张博超(Jackson)为大家演示如何用 IntelliJ IDEA 的重构功能来改善 Java 代码臭味。 (本次视频已同步发表至 B 站) 主題分享 在本次的分享里,张博超先用一个日常工作的场景给大家举了个例子:我们在工作前可能会先收拾一下桌子、重启电脑、提前打开软件、在昨天写的代码上加注释,这些动作代表很多情况下,人会有直觉去做改善措施,这些改善措施的背后都会对应一个需要解决的问题。写代码也是类似的,每当我们说要改善代码前,需要先想清楚这个改善的目标是什么?是要解决什么问题?同时,我们也要思考这个改善的作法是不是能真正的解决问题? 为了让大家具体体现重构的过程,张博超以一个计算预算的代码为例子,实际以 IntelliJ IDEA 演示该怎么综合运用提取变量、提取方法、提取类、引入参数对象、修改构造函数等重构功能安全地修改代码,将一个原本高达 30 行、充满原始类型迷恋(Primitives Obsession)、过分亲密(In