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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (93)

我非常喜欢JVM的远程调试工具。但我想知道它是如何在内部工作的。

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

有没有人有链接/资源呢?

提问于
用户回答回答于

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

JPDA本身由以下部分组成:

  • Java虚拟机工具接口(JVM TI) - 用于使用工具的本地编程接口。该接口允许进行状态检查并帮助控制调试对象内的执行流程。
  • Java Debug Wire Protocol(JDWP) - 用于定义调试器和调试进程之间的通信。
  • Java调试接口(JDI) - 该接口允许工具开发人员编写远程调试器应用程序。

JPDA架构结构中列出的图是一个很好的起点。JPDA页面列出了其他需要寻找的地方。

用户回答回答于

Java的调试体系结构称为JPDA。您可能想要阅读JPDA 文档。特别是,Walk-through部分给出了一个IDE与JDI接口的示例,以获取堆栈中的值。

扫码关注云+社区

领取腾讯云代金券