java debug调试原理_debug 调试原理理解

引言:

昨天,看了一篇文章,很受启发,记得之前听别的人远程调试过代码,觉得很神奇,在自己程序里打断点,连接远程服务器,开启调试后可以调用远程方法来看数据的输入和输出,不需要查找问题,重新部署,测试问题,直接远程调试,看运行结果,感觉很方便。

分析:

那么,它是怎么实现的呢?

首先,我想的问题是,它怎么知道我本机的断点在哪?我本机又是怎么输入输出数据?

之后,我在想本地调试为什么可以?怎么加入的断点?

我的观点:

看了那篇文章之后,了解了在c程序里,如果以调试模式运行,会把程序的断点翻译成一个中断【int 3】,运行到断点处,就保存执行状态,执行父级监控操作,之后父级更新子级的执行状态,载入保存信息,继续执行程序。

在【java】里,有JVM的存在,可以省好多事,分三层

1.JVMIT【虚拟机接口】,底层

2.JDWP【虚拟机传输协议,格式】,中间传输

3.JDI【程序调试接口】,发送指令控制接口

我个人理解是,把水流切断,处理,再放回去,对执行透明,比较像面向切面编程

而本机部署有热加载能力,可以把修改类或者断点生成的中断及时加载到运行程序里,run模式就不可行

像解剖一样,想看了,切开看看,看完再还原回去继续运行,【高维监视】

文章链接:

http://blog.jobbole.com/23463/  【中断原理】

https://www.ibm.com/developerworks/cn/java/j-lo-jpda1/  【JVM调试原理】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值