After a debug_mode call with a non null argument, you can redefine your functions and global variables. If the argument is greater than 1, redefinitions are signaled by a warning. After debug_mode call with zero as argument you cannot make redefinitions anymore.