非 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 的虚拟机。
关于python - 使用 eBPF 在 Python 堆栈级别跟踪代码是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53123965/