Debug Mode
ChainRulesCore supports a debug mode which you can use while writing new rules. It provides better error messages. If you are developing some new rules, and you get a weird error message, it is worth enabling debug mode.
There is some overhead to having it enabled, so it is disabled by default.
To enable, redefine the ChainRulesCore.debug_mode
function to return true
.
ChainRulesCore.debug_mode() = true
Features of Debug Mode:
- If you add a
Tangent
to a primal value, and it was unable to construct a new primal values, then a better error message will be displayed detailing what overloads need to be written to fix this. - during
add!!
, if anInplaceThunk
is used, and it runs the code that is supposed to run in place, but the return result is not the input (with updated values), then an error is thrown. Rather than silently using what ever values were returned.