int3 is used to call the DebugStub. Currently all C# lines emit an int3 and DebugStub checks it against a list of current breakpoints.

Future Improvement

Int3 on every C# line does create likely a fair performance penalty.

In the future the int3 ops should have noop placeholders which are dynamically replaced by int3 ops on demand. Also in future dont need noop placeholders - could replace first byte of op and restore it...

However Int3 is also used to monitor the serial port for commands. So if we make it a dynamic call, we still need to insert some special int3 or other calls to check for serial commands at some reguilar interval. We cannout use hardware interrupts. Maybe emit Int3 calls at every method or loop start?