使用eBPF跟踪Python堆栈级别的代码是否可行?

问题描述 投票:0回答:1

长期以来,广告宣传非Linux平台上的dtrace能够动态地检测node.js代码以在节点级别进行动态跟踪,例如允许在JavaScript堆栈帧和变量级别调试节点程序(以及更低级别)来自核心转储的级别跟踪。

Linux上的eBPF现在已经达到了那种复杂程度吗?我特别感兴趣的是Python,但如果对任何类似的动态语言都有回答,我会考虑回答这个问题。

如果没有,还有什么需要支持的呢?

python linux tracing bpf ebpf
1个回答
2
投票

是的,您可以使用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。

© www.soinside.com 2019 - 2024. All rights reserved.