Debugging
Some useful tips for debugging a recipe or the framework itself:
when developing code for a transform or debugging errors, it can be really useful to start an interactive console by adding:
start_ipython_dbg_cmdline(user_ns=locals())
into the code in the recipe and running single-threaded by adding
--worker 1 --single-threaded
to the command line. This also allows modifying data and plots on the fly and continue the normal program flow afterwards.alternatively, one can insert a
start_debug()
at the desired breakpoint. This will drop into a ipdb debugger session, which allows traversing the stack of the interpreter. The program flow can be continued with acontinue
command. Unfortunately, code contained in aextra_code
parameter is not visible in source form.alternatively, one can just raise an exception and it will be caught by the top level exception handler in run_recipe.py and then drop into an ipdb debugger session if the
--debug
flag has been set. It is also necessary to set--single-threaded
, otherwise the data and other worker/thread-local variables are not accessible.