关于JAVA Debug注释问题的思考

[size=small] 最近一个同事在使用Eclipse搭建初始WEB项目环境的时候,在后台的Servlet代码上修改之后,Debug调试的时候,修改的代码始终没有生效,并且总是会走到注释的那部分程序。我过去看了一下,说肯定是你写的程序没有被重新编译,Debug的class走的还是原来的那部分class文件。这时候,我的这位同事就反驳说,Debug的时候就是因为走的是class字节码,所以运行注释的部分也会被判断这行是不是注释,Debug的时候注释也不会忽略的。我听完他说的后,我当时的第一反应是根据我一直的Debug经验注释肯定是不会被Debug执行的,但是我在想,我是不是应该找到更专业的说法来解释这个问题。
带着这样的想法,我试图去网上搜索了相关的内容:
1、java Debug的体系:JPDA
JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写。它包括三个模块:
1)Java 虚拟机工具接口(JVMTI)-底层
2)Java 调试线协议(JDWP)-中间层
3)Java调试接口(JDI)-高层。
以Eclipse调试为例,实际是Eclipse实现了JDI调试接口,通过JDWP调试通信协议,访问JVMTI对class文件进行调试。
同时,我们可以把JPDA看成C/S框架体系,也就是说debugger端可以通过网络远程访问JVM
服务器,这就是为什么我们可以对JAVA进行远程调试。
2、了解java 调试器原理:
在查找这方面的资料时,在java文件编译成class文件的时候,有个关于debug必须选项:源文件行号(InputStartLine) 目标文件开始行号(OutputStartLine) 是必须的。以单步调试为例,Debug时把源文件中的行号通过JPDA通知映射到class文件对应的行,然后
就可以返回调试的结果信息。
了解了这两方面的内容,我们就大概清楚了Java Debug的执行过程,但是仍然无法解释我开头提到的问题,那么我就接着查相关的信息,关于java注释编译的信息,我终于得到了答案:[b]java文件编译的时候,注释是不会被编译到class文件中[/b]。
通过这个问题的分析,让我对java debug理论方面有了更多了解,同时也对关于远程调试相关的内容有了更深的理解。[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值