我在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的ustats
和ucalls
也附加但不报告任何内容。
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函数调用。为什么大多数电话都被跳过了?
1条答案
按热度按时间zvms9eto1#
这是自Python 3.11以来的一个bug。
https://github.com/python/cpython/issues/98894