学了几年编程,经常用debug ,但是还是不明白debug的核心原理,它是怎么工作的?单行debug(step into)是怎么实现的?
以java语言为例。
CPU 为调试实现做了什么?
JVM 为调试实现做了什么?
eclipse 为调试实现做了什么?
可能是我上面列出的三个东西与debug无关。我只是猜到了。我google了一段时间,没有得到对我有用的东西(当然,调试本身很复杂),我希望更简单的解释。
谢谢。
学了几年编程,经常用debug ,但是还是不明白debug的核心原理,它是怎么工作的?单行debug(step into)是怎么实现的?
以java语言为例。
CPU 为调试实现做了什么?
JVM 为调试实现做了什么?
eclipse 为调试实现做了什么?
可能是我上面列出的三个东西与debug无关。我只是猜到了。我google了一段时间,没有得到对我有用的东西(当然,调试本身很复杂),我希望更简单的解释。
谢谢。
每个处理器都有自己设计的调试机制。
对于 x86 CPU,处理器有 6 个调试寄存器,用于存储调试断点和断点条件。Intel x86 CPU调试机制简要看这篇文章:http ://en.wikipedia.org/wiki/X86_debug_register
对于 Java 调试机制的情况,请参阅:http ://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html ,正如 Mukul Goel 在问题下的评论流中指出的那样。
为了便于调试(使用断点等),编译器将某些附加信息插入到它生成的编译输出中(即二进制文件或 Java 的 JVM 字节码文件)。此额外信息允许将编译输出的每一行映射到相应的源文件。
我没有回答您问题的所有部分,但希望足以帮助您入门。查看这些资源:
请检查一下,它总结了正在调试的内容
http://www.indiastudychannel.com/resources/102306-Debugging-Software-Engineering.aspx