一件程序员必备武器的诞生( 四 )

GUI大臣表示不解:“为什么?”

“很简单,如果它们两个在一个JVM中,那被调试程序的独立性就不能保证了,可能会受到调试器的影响。举个极端的例子,调试器占据了很多Heap空间,导致被调试程序OOM了.....”

IO大臣:“那我们可以设计成C/S模式的,让它们之间通过socket通信怎么样?”

“如果这调试器和被调试程序都在一台机器上,用socket多少有点怪,我们也要支持共享内存的方式来通信。”

一件程序员必备武器的诞生

图3/6

GUI大臣说:“如此看来, JVM老兄,你得提供接口啊,让调试器可以访问Java程序在运行时的状态,嗯,我觉得至少得有这些功能:

获取一个线程的状态, 挂起一个线程,让线程恢复执行, 设置一个线程,单步执行

获取线程的当前栈帧,调用栈帧,栈帧对应的方法名

推荐阅读