Debugging#
IDE debuggers, like VS Code and PyCharm use a callback system in Python called tracing. By default, Pyjion has tracing disabled. To debug Python code with Pyjion, you must enable tracing.
Call tracing#
Python’s tracing callback API adds overhead to execution. To improve performance, Pyjion will only compile these callbacks when tracing is enabled ahead of time.
Before calling sys.settrace()
:
import sys
import pyjion
def custom_tracer(frame, event, args):
...
def _f():
a = 1
b = 2
c = 3
d = 4
return a + b + c + d
pyjion.enable()
sys.settrace(custom_tracer)
assert _f() == 10
sys.settrace(None)
Profiling#
Python profilers (like the profile
module) require runtime callbacks in Python execution.
See Profiling <https://docs.python.org/3/library/profile.html> for the Python reference.
Call sys.setprofile()
to set a profile function:
import sys
import pyjion
def custom_profiler(frame, event, args):
...
def _f():
a = 1
b = 2
c = 3
d = 4
return a + b + c + d
pyjion.enable()
sys.setprofile(custom_profiler)
assert _f() == 10
sys.setprofile(None)