Writing a Debugger from Scratch
4 hours ago
- 作者用Rust编写了一个调试器,以学习该语言并帮助他人理解调试器内部机制。
- 调试器采用事件循环:附加到进程、等待调试事件、继续执行。
- 在Windows上,通过DebugActiveProcess或设置DEBUG_ONLY_THIS_PROCESS标志的CreateProcessW进行附加。
- 事件循环调用WaitForDebugEventEx接收事件,用ContinueDebugEvent恢复目标进程。
- 调试事件包括CreateProcess、LoadDll、CreateThread、Exception等,每种事件携带特定数据。
- 初始异常是进程启动时由ntdll!LdrpDoDebuggerBreak触发的断点。
- 后续文章将涵盖处理异常、断点、单步执行和其他高级功能。