发表日期:2017-11-15 16:46:10文章编辑:025app.com 标签:行业新闻
在x86指令集里面,有一条神奇而特殊的指令"int 3".这条指令的机器代码就是一个字节的0xCC. 当CPU执行到int 3指令是,就会触发异常处理机制,这个时候调试器就有机会断下程序的执行。
于是在debug版本的程序中,编译器都会把所有的数据区都初始化为0xcc,这样子由于bug执行到了数据区的代码的时候,首先执行的就是int 3.这样子就能在bug出现的第一现场让程序停下来。
调试器实现断点功能也是基于int 3指令。设置断点时,会把对应的指令的首字节改为0xCC,这样执行到这条指令时,就能断下来了。