Trace your python process line by line with low overhead!
beatrace allows you to trace a Python process line by line or the functions' entries and returns. It uses USDT(User Statically-Defined Tracing) probes with bpftrace.
Dependencies
-
This package is only available for Linux and requires bpftrace. You can look at the bpftrace installation here.
-
CPython must be configured with the --with-dtrace option.
Installation
pip install beetrace
Usage & Example
To trace the Python process, use the -p parameter to pass the pid value.
beetrace -p {pid of process}
Let's take a look at the quick example.
$ cat -n example.py
1 import os
2 from time import sleep
3
4
5 def c():
6 x = 1
7
8 def b():
9 y = 2
10 c()
11
12
13 def a():
14 z = 1
15 b()
16
17
18 while True:
19 print(f"PID of program: {os.getpid()}")
20 sleep(1)
21 print("Sleep 1 second")
22 a()
Output:
PID of program: 17988
Sleep 1 second
PID of program: 17988
Sleep 1 second
PID of program: 17988
Sleep 1 second
PID of program: 17988
...
...
...
$ beetrace -p 17988
___ ____ ____ ___ ____ ____ ____ ____
|__] |___ |___ | |__/ |__| | |___
|__] |___ |___ | | \ | | |___ |___
PID: 17988 | Tracing from: python3 example.py
Press Control-C to quit.
Path File:Line Function
/tmp example.py:18 <module>
/tmp example.py:19 <module>
/tmp example.py:20 <module>
/tmp example.py:21 <module>
/tmp example.py:22 <module>
/tmp example.py:14 a
/tmp example.py:15 a
/tmp example.py:9 b
/tmp example.py:10 b
/tmp example.py:6 c
/tmp example.py:18 <module>
/tmp example.py:19 <module>
/tmp example.py:20 <module>
/tmp example.py:21 <module>
/tmp example.py:22 <module>
/tmp example.py:14 a
/tmp example.py:15 a
/tmp example.py:9 b
/tmp example.py:10 b
/tmp example.py:6 c
/tmp example.py:18 <module>
/tmp example.py:19 <module>
/tmp example.py:20 <module>
... ... ...
... ... ...
... ... ...
... ... ...
Release files for beetrace 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| beetrace-0.1.0.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beetrace-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.8 kB
Release files / beetrace-0.1.0.tar.gz
| Download URL | beetrace-0.1.0.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc31629d624c6916779cc3518e400e23d179b5e3cf0b67f205b712c521e46ddd
|
|
BLAKE2b-256 checksum How to use checksums |
38bd8830685b7ae4c7576ccdf011c7b87d6926d542ef01dde2d006d1d198c294
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.9
|
Release files / beetrace-0.1.0-py3-none-any.whl
| Download URL | beetrace-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
422f254d933f924ad48b88030d283d6a40df52eff445ff36d3fe5ed28bfde966
|
|
BLAKE2b-256 checksum How to use checksums |
8616e19159c8b67d3ddc5589c752eab85c7a4647c5afacbf7759d78fa8f8ea11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.9
|