Idea远程调试 (包含调试docker容器)

首先我们说一下调试的本质,了解了调试的本质我们就很容易理解远程调试是怎么来的了。

  1. Java本地debug时我们常常以为breakpointer打在了java文件中,看到到了breakpointer处jvm停了下来,认为debug时jvm运行的就是java文件了。其实并不是这样。jvm只能运行经过编译后的class文件,那么breakpointer打在了java文件中虚拟机怎么知道什么时候暂停呢,答案当然是通信了,本地运行的服务和IDE进行通信确定断点的位置和单签运行stack中的value。

  2. Java远程调试的原理是两个VM之间通过debug协议进行通信,然后以达到远程调试的目的,两者之间可以通过socket进行通信

说完了本质,接下来的工作就容易了。远程调试是jvm附带的功能,jvm的功能当然是用启动参数来开关了。

首先我们在远程服务器jvm启动参数里添加如下命令

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address={
   port}

你可能感兴趣的:(java,java)