Além das ótimas informações de @BenVoigt, permita-me fazer algumas adições:
Um ponto de interrupção é definido pelo depurador substituindo um valor de código de máquina (uma instrução ou parte de uma instrução) no processo que está sendo depurado por uma instrução de interceptação específica no local no código que corresponde à linha (de origem) desejada para interromper. Essa instrução de interceptação específica deve ser usada como um ponto de interrupção - o depurador sabe disso e o sistema operacional.
Quando o processo / thread que está sendo depurado atinge a instrução trap, que aciona o processo que @Ben está descrevendo, que inclui a metade de uma troca de contexto que suspende o thread em execução no momento (que inclui salvar o estado da CPU na memória) para possível reinicialização posterior. Como essa interceptação é uma interceptação de ponto de interrupção, o sistema operacional mantém o processo sendo depurado suspenso usando talvez um mecanismo que @Ben descreve e notifica e, eventualmente, retoma o depurador.
O depurador usa chamadas do sistema para acessar o estado salvo do processo / thread suspenso que está sendo depurado.
Para executar (retomar) a linha de código que foi interrompida (que agora possui a instrução de interceptação específica), o depurador restaurará o valor original do código de máquina que ele substituiu pela instrução de interceptação, possivelmente configurará outra interceptação em outro lugar (por exemplo, se uma única etapa, ou o usuário cria novos pontos de interrupção) e marca o processo / encadeamento como executável, talvez usando um mecanismo descrito por @Ben.
Detalhes reais podem ser mais complicados, pois manter um ponto de interrupção de execução demorado significa fazer algo como trocar a interceptação do ponto de interrupção por código real, para que a linha possa ser executada e, em seguida, trocar o ponto de interrupção novamente ...
Os registros não estão sendo usados por outros processos do SO constantemente? como eles não são substituídos?
Como o @Ben descreve, o uso do recurso de suspensão / retomada de encadeamento já existente (a alternância / troca de contexto da multitarefa ) que permite que os processadores sejam compartilhados por vários processos / encadeamentos usando a redução de tempo.
É apenas uma captura instantânea do conteúdo e não dados ao vivo?
São os dois. Como o encadeamento que atingiu o ponto de interrupção é suspenso, é feita uma captura instantânea dos dados ativos (registros da CPU, etc.) no momento da suspensão, e o mestre autoritário dos valores de registro da CPU para restaurar no processador, caso o encadeamento seja retomado. . Se você usar a interface do usuário do depurador para ler e / ou alterar os registros da CPU (do processo que está sendo depurado), ele lerá e / ou alterará esse instantâneo / mestre usando chamadas do sistema.