分类: LINUX
2009-02-25 14:56:20
这是今天早晨我和一个网友关于eclipse调试原理的聊天记录,希望对大家有帮助:
小鱼 说:
你说了解JAVA的编译机制和熟练使用调试,最好的方法是不是去阅读eclipse的源代码啊
杨中科 说:
编译机制?要了解编译机制的话最先肯定要把编译原理搞清楚呀,eclipse本身是不负责编译java代码的,它是委托给JDK去编译的,因此要了解java的编译机制肯定要去阅读jdk的源码的
杨中科 说:
不过jdk的编译器部分的源码好像没有开放
杨中科 说:
使用调试也不用去看源码,功能很简单的
小鱼 说:
是啊,我觉得eclipse的调试很有用啊,尤其是你以前讲过的那个jsp的调试,学问很深啊
杨中科 说:
原理上并不难,因为eclipse是把调试请求通过jpda协议发给jdk来完成的,eclipse本身不提供java代码的编译和调试机制
小鱼 说:
这就是实时监测虚拟机的运行状态吧
杨中科 说:
不过读懂了eclipse的java调试部分的代码你就也可以写出一个java的调试器出来
小鱼 说:
断点就是给程序一个中断是吧?
小鱼 说:
是的
杨中科 说:
不是实时检测,是一个请求、应答的模式
杨中科 说:
比
如我们在java的编译器的第五行放了一个断点,那么代码调试起来以后,eclipse就告诉运行环境“请在第五行停下来”,那么运行环境就会在第五行停
下来。然后你想看看i这个变量的值,eclipse就会向运行环境请求“请告诉我i等于多少”,然后运行环境就将i的值告诉
eclipse,eclipse就将这个值显示给你。原理非常简单
小鱼 说:
也就是程序挂起吧?
杨中科 说:
eclipse只是充当了一个介绍人的角色
杨中科 说:
不明白程序挂起具体指的什么,不过应该就是你理解的意思
小鱼 说:
也是,一个和用户直接打交道的UI
杨中科 说:
对