indygreg / python-build-standalone

Produce redistributable builds of Python
BSD 3-Clause "New" or "Revised" License
1.71k stars 107 forks source link

eBPF tracing support #239

Open hariom-qure opened 3 months ago

hariom-qure commented 3 months ago

Linking the original issue here (we use rules_python, where I raised it first): https://github.com/bazelbuild/rules_python/issues/1737

I want to use eBPF to do arbitrary performance profiling of our code, but its not very useful if the python interpreter is not compiled with dtrace and frame pointer support. Without these two, all the information about function names are lost in the stack trace.
The important flags:

  1. --with-dtrace: This flag enables static markers inside python which we can hook into using eBPF (details: https://docs.python.org/3/howto/instrumentation.html)
  2. Enable Frame pointer: -fno-omit-frame-pointer in gcc. This makes sure the information of function names in stack trace is not lost. References: https://www.brendangregg.com/blog/2024-03-17/the-return-of-the-frame-pointers.html