长期以来,广告宣传非Linux平台上的dtrace能够动态地检测node.js代码以在节点级别进行动态跟踪,例如允许在JavaScript堆栈帧和变量级别调试节点程序(以及更低级别)来自核心转储的级别跟踪。
Linux上的eBPF现在已经达到了那种复杂程度吗?我特别感兴趣的是Python,但如果对任何类似的动态语言都有回答,我会考虑回答这个问题。
如果没有,还有什么需要支持的呢?
是的,您可以使用BPF和USDT probes来跟踪Python脚本。你必须要build your Python runtime with USDT probes。
密送包括a few tracing scripts for Python。例如,您可以使用pythoncalls.sh
打印前2个方法:
$ ./pythoncalls.sh -T 2 -p 26914
Tracing calls in process 26914 (language: python)... Ctrl-C to quit.
METHOD # CALLS
<stdin>.<module> 1
<stdin>.fibo 14190928
^C
请注意,其他几个虚拟机支持USDT探测器,例如Java,Perl,PHP,Ruby和Tcl。