Il peut être théoriquement possible pour un environnement d'exécution de rechercher de telles boucles en utilisant la procédure suivante:
Après chaque instruction exécutée, l'environnement d'exécution ferait une image complète de l'état d'un processus en cours (c'est-à-dire toute la mémoire qui lui est associée, y compris les registres, le PC, la pile, le tas et les globaux), enregistrer cette image quelque part, puis vérifier pour voir s'il correspond à l'une de ses images précédemment enregistrées pour ce processus. S'il y a correspondance, le processus est bloqué dans une boucle infinie. Sinon, l'instruction suivante est exécutée et le processus est répété.
En fait, plutôt que d'effectuer cette vérification après chaque instruction, l'environnement d'exécution pourrait simplement interrompre périodiquement le processus et créer un état de sauvegarde. Si le processus est bloqué dans une boucle infinie impliquant n états, alors au plus n vérifications, un état en double sera observé.
Notez, bien sûr, que ce n'est pas une solution au problème d'arrêt; la distinction est discutée ici .
Mais une telle caractéristique serait un énorme gaspillage de ressources ; interrompre continuellement un processus pour enregistrer toute la mémoire qui lui est associée le ralentirait énormément et consommerait une énorme quantité de mémoire très rapidement. (Bien que les anciennes images puissent être supprimées après un certain temps, il serait risqué de limiter le nombre total d'images qui pourraient être enregistrées car une grande boucle infinie - c'est-à-dire une avec plusieurs états - pourrait ne pas se coincer s'il y en a trop peu états conservés en mémoire.) De plus, cette fonctionnalité ne fournirait pas vraiment autant d'avantages, car sa capacité à intercepter les erreurs serait extrêmement limitée et parce qu'il est relativement simple de trouver des boucles infinies avec d'autres méthodes de débogage (comme simplement parcourir le code et reconnaître l'erreur logique).
Par conséquent, je doute qu'un tel environnement d'exécution existe ou qu'il existera jamais, à moins que quelqu'un ne le programme juste pour des coups de pied. (Ce que je suis un peu tenté de faire maintenant.)