AVR ATmega breakpoints and BREAK instruction
Does on-chip-debugging-engine modifies flash and remembers original
  instruction?


Yes and no. Some AVR controllers have a limited number (3?) of "hardware" breakpoints which can be set dynamically at runtime and will not live beyond the end of the debugging session (reset, power down, ...). 

However, if/when you have set more breakpoints than are available via these "hardware" ones, or if you have a controller without any of those, the debugger software will indeed replace the instructions where your breakpoint is set with "BREAK" instructions and will restore them later. No wonder that a sudden interruption of the debugging session will leave the controller somewhat unusable until you re-flash it, overwriting the artificially introduced "BREAK"s.

This mechanism is also mentioned in the AVR docs, where they state that this type of debugging may pose additional stress on the flash memory: Each time one such breakpoint is set or removed or hit, a part of the flash will be re-programmed in the background by the debugger software.

See also here, for example.