引言#
由于 GDB 对 Rust 语言的支持不如 C/C++ 语言完善,加上 GDB 静态跟踪的局限性,我们无法完整地获取到一些重要的内核数据结构的信息。因此,我们编写了一个基于 eBPF 技术的 gdbserver(称为 eBPF server),它具有函数插桩等动态跟踪功能,从而和 Qemu 虚拟机提供的 gdbserver 互补,获取到更多内核信息。 eBPF 程序具有隔离性,不干扰操作系统的运行状态。因此,用eBPF程序编写的 eBPF Server 只有强的动态跟踪能力而没有控制被调试的操作系统的能力。控制功能只能通过 Qemu 虚拟机提供的 gdbserver 来实施。