linux Python dtrace + bpftrace

y1aodyip  于 2023-06-05  发布在  Linux
关注(0)|答案(1)|浏览(309)

我在Python 3.12中构建了dtrace支持,但python:function__entry没有被正确调用。
python:line探针工作得很好,但python:function__entry很少打印东西。

❯ sudo bpftrace -e 'usdt:/usr/lib/libpython3.12.so.1.0:python:line { printf("%s %s %d\n", str(arg0), str(arg1), arg2); }'
❯ sudo bpftrace -e 'usdt:/usr/lib/libpython3.12.so.1.0:python:function__entry { printf("%s %s\n", str(arg0), str(arg1)); }'

❯ python3.12 -m http.server
Attaching 1 probe...
<frozen getpath> <genexpr>
<frozen getpath> <genexpr>
/usr/lib/python3.12/enum.py <genexpr>
/usr/lib/python3.12/enum.py <genexpr>
/usr/lib/python3.12/enum.py <genexpr>
/usr/lib/python3.12/enum.py <genexpr>
/usr/lib/python3.12/email/_policybase.py <genexpr>
/usr/lib/python3.12/email/_policybase.py <genexpr>
/usr/lib/python3.12/email/_policybase.py <genexpr>
/usr/lib/python3.12/email/_policybase.py <genexpr>
/usr/lib/python3.12/email/_policybase.py <genexpr>

bcc的ustatsucalls也附加但不报告任何内容。

PID    CMDLINE              METHOD/s   GC/s   OBJNEW/s   CLOAD/s  EXC/s  THR/s 
6857   /bin/python /home/xx 0          0      0          0        0      0

我希望它能打印每个python函数调用。为什么大多数电话都被跳过了?

相关问题