要求:
当内存位置更改或写入时,我需要生成中断。在 ISR 中,我可以触发蓝屏,它会为我提供带有方法名称的漂亮堆栈跟踪。
方法:
- 测试定时器 ISR 中的值。显然,这不会产生令人满意的结果。
- 我发现了bochs虚拟机。它有一个基本的内置调试器,可以设置数据断点并停止程序。但那时我似乎无法产生中断。
- bochs 允许将 gdb 连接到它。不过,我无法使用 gdb 支持来构建它。
其他想法:
- 一种“预览指令”中断,在执行每条指令之前触发它。使用的内存写入指令集应该非常易于管理,但我认为提取地址仍然是一个 PITA。我认为没有这样的中断。
- 一种“预览内存访问”中断。再说一次,我不认为它在那里。
- 滥用分页。将感兴趣的页面标记为不存在并在页面错误处理程序中测试地址。仍然需要区分读写操作,我认为,页面错误处理程序不知道确切的地址,只知道页码。