引言:  

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

分析:

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

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

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

我的观点:

  看了那篇文章之后,了解了在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调试原理】

转载于:https://www.cnblogs.com/hackxiyu/p/8078613.html

debug 调试原理理解相关推荐

  1. Debug Hacks (1): 理解用GOT/PLT调用函数的原理

    Debug Hacks (1): 理解用GOT/PLT调用函数的原理 1. GOT/PLT GOT是Global Offset Table,是保存库函数地址的区域.程序运行时,库函数的地址会设置到GO ...

  2. PHP CLI应用的调试原理

    我们在Eclipse里选中一个PHP文件,右键选择Debug As->PHP CLI Application. 所谓CLI应用,是指这种脚本文件不需要任何Web服务器即可运行,当然, PHP运行 ...

  3. 【系统篇】从int 3探索Windows应用程序调试原理

    http://www.cnblogs.com/xuanyuan/p/3998408.html 探索调试器下断点的原理 在Windows上做开发的程序猿们都知道,x86架构处理器有一条特殊的指令--in ...

  4. ARM JTAG 调试原理

    ARM JTAG 调试原理 JTAG的接口是一种特殊的4/5个接脚接口连到芯片上 ,所以在电路版上的很多芯片可以将他们的JTAG接脚 通过Daisy Chain的方式连在一起,并且Probe只需连接到 ...

  5. Java本地远程服务器debug调试详解

    日常我们debug是经常用的,但是本地还好说,远程debug就有点难度,而且有时候必须要在预演,测试环境的服务器去debug,举个例子,需要https,公网,域名之类的,测试服务器这些有些是配置的,但 ...

  6. idea 导出war包_使用IDEA实现远程代码DEBUG调试教程详解

    我们在使用 IDEA DEBUG调试代码的时候,常常见到控制台会输出一句这样的话:「Connected to the target VM, address: '127.0.0.1:62981', tr ...

  7. Eclipse Debug调试详解

    目录 一.debug透视图: 1.进入方式:​右上角点击添加框,选择"臭虫",再点击小虫. 2.debug调试下的一些常用一些透视图,如果没有自行添加,windows---> ...

  8. 计算机原理理解编程语言_计算机如何理解我们对编程语言及其工作原理的高级概述...

    计算机原理理解编程语言 Many folks have at one point or another asked themselves how a computer really understan ...

  9. 如何使用 dlv 结合 Goland 进行程序 debug 调试

    如何使用 dlv 结合 Goland 进行程序 debug 调试 相信很多 Golang 的初级玩家不会进行程序的 Debug 定位问题单纯的靠脑子,或者效率很低的不断的添加日志打印,别问我为什么知道 ...

最新文章

  1. python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)
  2. Luogu3694 邦邦的大合唱站队 (状压DP)
  3. Packet for query is too large
  4. 意外收获字节跳动内部资料,已开源
  5. Linux下,C++编程论坛题目抽取
  6. 途观l怎么使用_官宣!中型SUV质量最新排名出炉:汉兰达失前三,大众途观L上榜!...
  7. java解析xml乱码_大神们,我用DOM4j解析xml文档时,中文乱码
  8. Uniapp 微信小程序登陆页面
  9. python foo函数_Python函数基础
  10. 图像各向异性扩散(一)
  11. java学习第八天内容
  12. CDN概念和基本原理
  13. NIN:Network in Network
  14. 封神演义人物实力分级点评
  15. 【uniapp】根据身份证号获取生日日期
  16. 企业服务是移动互联网的下一个风口
  17. 上海大学2021年博士研究生招生简章
  18. linux 搭建Discuz论坛教程-个人实践笔记
  19. 计算机游戏的作文,电脑游戏作文3000字初一_查字典作文网
  20. 地磁基本知识(一)地球磁场

热门文章

  1. MyBatis知多少(12)私有数据库
  2. 生产性服务业的源起及内涵(制造服务业的前世今生之一)
  3. Python3 流程控制语句
  4. 空间索引 - GeoHash算法及其实现优化
  5. apache配置反向代理以及实现url重写,防盗链
  6. 图解Oracle备份方式分类
  7. HDFS简单介绍及用C语言訪问HDFS接口操作实践
  8. 定义查询构建器IFeatureLayerDefinition
  9. noip2014滚粗记
  10. struct tm 和 time_t