断点是GDB等最流行的调试器支持的最酷的特性之一。但是断点是如何工作的呢?编译器做了哪些代码修改来实现断点?是否有用于支持断点的特殊硬件功能?
发布于 2013-01-30 16:43:16
编译器不需要以任何方式“修改”二进制文件来支持断点。然而,重要的是:
然后,其余的工作由调试器本身执行。
发布于 2015-09-08 15:15:24
要设置断点,首先我们必须在二进制文件中添加一些特殊信息,使用标志-g,同时编译c源文件以包含此info.The软件调试器实际上使用此信息来设置break points.The硬件断点支持的最佳示例是VxWorks,据我所知。基本上,在断点处,处理器内部的halts.So任何会给处理器一个异常的步骤都可以用来放置一个软件断点point.While硬件断点通过匹配存储在硬件寄存器中的地址来产生exception.So硬件断点是非常强大的,但它严重依赖于体系结构。
这里有一个很好的解释:What is the difference between hardware and software breakpoints?这里给出了一个很好的介绍,介绍了处理器相关的信息。http://processors.wiki.ti.com/index.php/How_Do_Breakpoints_Work
https://stackoverflow.com/questions/14598524
复制相似问题