Starting from this chapter, we begin our journey into debugger development.
In this chapter, we will first analyze the functional and non-functional requirements of a debugger, then present a feasible technical solution, and finally provide a skeleton implementation of a debugger with a brief explanation of the source code.
Subsequently, we will build upon this debugger skeleton to implement instruction-level debugging and symbol-level debugging features step by step.