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