2020-08-05

GDBがeBPFのデバッグをサポートした

GDBがeBPFのデバッグをサポートした。

GNU Debugger Adding eBPF Debugging Support - Phoronix

eBPFというのはLinuxカーネル内の仮想マシンだ。

もともと、BPF(Barkley Packet Filter)という仮想マシンがあった。これはネットワークのパケットフィルタリングをするための仮想マシンで、レジスターベースのRISCプロセッサーを模した命令セットになっている。

カーネル内で安全にユーザーコードを実行するというのは需要があるので、BPFをより汎用的に使いたいという声は多かったのだが、何分BPFは設計が古い。レジスタは2個で32bit、命令セットはatomic compare exchangeのようなモダンなプロセッサーに搭載されている命令がない。

そのためeBPF(extended BPF)が設計された。レジスタは10個で64bit、命令セットもモダンなプロセッサーにマッピングできるように見直された。