AFAIK все отладчики (для любого скомпилированного языка), которые допускают неограниченное количество точек останова, используют вариант замены инструкции для точки останова специальным значением (как описано выше) и ведения списка мест, где эти значения были размещены,
Когда процессор пытается выполнить одно из этих специальных значений, возникает исключение, отладчик перехватывает его и проверяет, находится ли адрес исключения в его списке точек останова.Если это так, то отладчик вызывается, и пользователю предоставляется возможность взаимодействовать.Если это НЕ, тогда исключение происходит из-за того, что было в программе с самого начала, и отладчик пропускает исключение в любой обработчик ошибок.
Обратите внимание, что отладкаизменение кода может привести к сбою именно потому, что отладчик на мгновение модифицирует сам код.(Конечно, никто никогда не напишет самоизменяющийся файл, теперь они будут?>; -)
По этим причинам важно, чтобы отладчику была предоставлена возможность удалить все установленные им точки останова перед завершениемсеанс отладки.