当前位置: 首页 > 面试题库 >

Java远程调试,它在技术上如何工作?

曹奇文
2023-03-14
问题内容

我真的很喜欢JVM的远程调试功能。但是我不知道它在内部如何工作。

我的假设:这是通过JVM功能完成的,其中正在运行的进程正在从附加的远程调试器(如IDE)下载/使用源代码。它知道当前堆栈跟踪的行,然后可以跳转到相应的IDE断点。然后,通过套接字或共享内存(远程调试器的设置)完成堆栈跟踪和应用程序状态的内部通信。

有没有人对此感兴趣的链接/资源?


问题答案:

JVM的调试功能是通过Java平台调试器体系结构(JPDA)提供的。

JPDA本身由以下部分组成:

  • Java虚拟机工具接口(JVM TI)-工具使用的本机编程接口。该接口允许进行状态检查,并有助于控制调试html" target="_blank">对象中的执行流程。
  • Java调试线协议(JDWP)-用于定义调试器和被调试进程之间的通信。
  • Java调试接口(JDI)-该接口允许工具开发人员编写远程调试器应用程序。

JPDA体系结构结构中列出的图是一个很好的起点。要查找的其他地方将是JPDA页面中列出的指南。



 类似资料:
  • 在不那么容易找到JavaScript 调试程序的年代,开发人员不得不发挥自己的创造力,通过各种方法来调试自己的代码。结果,就出现了以这样或那样的方式置入代码,从而输出调试信息的做法。其中,最常见的做法就是在要调试的代码中随处插入alert()函数。但这种做法一方面比较麻烦(调试之后还需要清理),另一方面还可能引入新问题(想象一下把某个alert()函数遗留在产品代码中的结果)。如今,已经有了很多更

  • 谷歌是如何实现他们的推送通知功能的?它是通过在后台运行的服务完成的轮询工作还是以不同的方式工作?

  • 我正在尝试弄清楚如何调试远程运行的jar。这是我的场景: > 我的. jar将从VPS运行。这个jar基本上运行一个游戏的服务器,所以它也连接到一个mysql db。我用3. bat文件启动服务器,看起来像这样: 设置CLASSPATH=.; dist\aries.jar; dist\mina-core.jar; dist\slf4j-api.jar; dist\slf4j-jdk14.jar;

  • ThinkPHP5.0版本开始,提供了Socket日志驱动用于本地和远程调试。 Socket调试 只需要在配置文件中设置如下: return [ 'type' => 'socket', 'host' => 'slog.thinkphp.cn', //日志强制记录到配置的client_id 'force_cl

  • 我正在使用PHPStorm开发我的PHP网页。我的Apache服务器XDebug和一个简单的web PHP项目都运行良好。没问题。 但是,当我尝试使用 调试 Laravel 5.1 Web 项目时,我无法调试断点。这就像 使用另一台服务器...... 在我的PHPStom上,我总是看到: 等待使用 ide 键“(randomNumberHere)”的传入连接 我已经在PHPStorm中配置了所有内

  • 我一直在尝试对Java小程序进行远程调试。我使用的是Java 7 update 51,当我尝试加载小程序时,它会在Java控制台中显示,然后被触发。 我在Javacpl中将以下参数作为运行时参数传递:“-Djava.compiler=NONE-Xnoagent-Xdebug-Xrunjdwp:transport=dt_socket,address=8007,server=y,suspend=n”