dtrace一直被宣传为能够动态插入node.js代码,以便在节点级别进行动态跟踪,例如,允许从核心转储在JavaScript堆栈帧和变量级别调试节点程序(以及较低级别的跟踪(。
Linux上的eBPF现在已经达到了这种复杂程度了吗?我特别对Python感兴趣,但如果对任何类似的动态语言都有答案,我会认为这个问题已经得到了回答。
如果没有,还需要做些什么来支持这一点?
是的,您可以使用BPF和USDT探测来跟踪Python脚本。不过,您必须使用USDT探测构建Python运行时。
bcc包括一些Python的跟踪脚本。例如,您可以使用pythoncalls.sh
打印名为:的前两种方法
$ ./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。