When the debugger command loop establishes variable bindings for available
variables, these variable bindings have lexical scope and dynamic
extent. You can close over them, but such closures
can't be used as upward funargs.
You can also set local variables using setq, but if the variable was closed over in the original source and never set, then setting the variable in the debugger may not change the value in all the functions the variable is defined in. Another risk of setting variables is that you may assign a value of a type that the compiler proved the variable could never take on. This may result in bad things happening.