At Pixie, we developed a feature to dynamic trace program execution context, for example: arguments and return values of a function [1].
That was built on top of eBPF [2], and in the process we have studied how debugger works, particularly how to pull rich context information about the program executable's file structure (symbols, elf format) and dwarf information [3]. The other significant piece is golang's own implementation details, such as how interface is implemented.
It's a very refreshing learning experience. The end result is that we gained a deeper understanding of how program presents itself to operating system and chips.
That was built on top of eBPF [2], and in the process we have studied how debugger works, particularly how to pull rich context information about the program executable's file structure (symbols, elf format) and dwarf information [3]. The other significant piece is golang's own implementation details, such as how interface is implemented.
It's a very refreshing learning experience. The end result is that we gained a deeper understanding of how program presents itself to operating system and chips.
[1] https://docs.pixielabs.ai/using-pixie/code-tracing/ [2] https://www.iovisor.org/technology/ebpf [3] https://en.wikipedia.org/wiki/DWARF