@args --debugger
we enter a debugger via builtins.break in the input file.

  info: breakpoint reached

causing another debugger even should not nest, but simply
print the error, skip the breakpoint, etc as appropriate.

  nix-repl> "values show"
  "values show"

  nix-repl> builtins.break 2
  2

  nix-repl> builtins.throw "foo"
  error:
         … while calling the 'throw' builtin
           at «string»:1:1:
              1| builtins.throw "foo"
               | ^

         error: foo

  nix-repl> assert false; 2
  error: assertion 'false' failed
         at «string»:1:1:
              1| assert false; 2
               | ^

exiting the debug frame should allow another to open.

  nix-repl> :c

  nix-repl> builtins.throw "bar"
  error: bar

and once again, more breakpoints are ignored.

  nix-repl> builtins.break 3
  3
  error: bar
