使用eBPF在Python堆栈级别跟踪代码是否可行长期以来,非Linux平台上的



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。

最新更新