概要设计

我们介绍了调试器在软件开发全生命周期中的必要性,我们还分析了在真实的开发、测试、线上环境中软件调试面临的诸多挑战,包括多平台兼容性、远程调试、安全隔离、性能影响等。为了应对这些挑战,现代调试器普遍采用前后端前后端架构设计,并需要支持前后端的独立扩展、严谨。

接下来,我们将开发一个面向Go语言的符号级调试器,它除了具备前面介绍过的基础的指令级调试能力,也会支持源码级别的调试,同时也会根据Go的语言特性来提供一些更友好易用的调试能力,如支持协程级别(而非线程级别)的断点能力,支持切换到不同的线程、协程,支持函数调用,等等吧。

和前面介绍指令级调试时的内容组织类似,我们会先对调试器的整体框架进行介绍,比如如何实现前后端分离式架构,前后端RPC通信如何设计实现,UI层、Service层、符号层、目标层各自可以如何进行扩展。然后,我们介绍下调试器要支持的调试方式(attach、exec、debug、test、core、trace),以及调试会话中要支持的调试命令(breakpoint、tracepoint、continue、list、print、bt,等等)。最后设计实现小节,我们再介绍各个调试命令的实现细节。

Let's Go!

results matching ""

    No results matching ""