阅读 How debuggers work: Part 2 - Breakpoints 总结

调试器有两个基石:1. 断点  2. 访问被调试程序的内存

Software interrupts

中断:为了处理异步事件(比如 IO 和 时钟)

硬件中断:包含1. 一个专用的电子信号 2. 一个特别的“反应电路”会回应这个电子信号。当电路检测到这个电子信号,就会停下CPU,保存它的状态,接着跳入一个预先定义好的地址去调用一个handler来处理这个中断,在Handler处理好后,CPU再从上次停止的地方恢复执行。

软件中断:CPU支持一些特别的指令,这些指令会让软件模拟中断。当软件执行了一个这样的特别的指令后,CPU会把这个指令当成一个中断,停止执行,保存状态,并跳入对应的handler。这就叫做"trap"(陷入),这允许了现代操作系统的许多奇迹。

今天,许多异常已经很难说是硬件中断还是软件中断了。

int 3 in theory

int 指令是用来启动“陷入”,也就是软件中断的。在x86中,前32个中断号被CPU保留,其中int 3叫做 “trap to debugger"。

根据intel手册,int 3 产生一个特殊的单字节操作码(CC),这个操作码会调用一个 debug exception handler

(没看完)

int 3 in practice

一旦一个进程执行了 int 3 指令,操作系统就会暂停这个进程。在Linux中就是向这个进程发送SIGTRAP信号。

(想看懂似乎需要看part 1,先看part1吧)

原文:https://eli.thegreenplace.net/2011/01/27/how-debuggers-work-part-2-breakpoints

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值