基于 eBPF 的动态调试设计#

背景#

GDB 静态断点调试需要暂停程序的执行,会干扰被调试对象的运行。eBPF 动态跟踪可以在不暂停程序的情况下收集运行时信息,与静态断点调试形成互补。

方案设计#

结合 GDB 断点与插桩的方式,设计基于白名单的动态函数调用跟踪方法:通过白名单指定需要跟踪的函数,在函数被调用时收集运行时信息。

项目设想还包括:在物理机器上利用 eBPF 机制,跟踪用户模式、内核模式和虚拟机监控模式的代码执行状态和数据结构信息。

历史工作#

第一阶段曾实现过 eBPF 调试面板(WebView):连接 eBPF side-stub,查看并搜索内核/用户程序的符号表,选择函数地址注册 kprobe/uprobe,在探针触发时收集寄存器值等运行时信息。

当前状态#

规划中。