Die Herausforderung besteht darin, ein deterministisches Programm (eine beliebige Sprache / ein beliebiges Betriebssystem) zu schreiben, das keine Argumente oder andere Eingaben akzeptiert und sich in einem Debugger anders verhält, als es sich verhält, wenn kein Debug durchgeführt wird .
Beispielsweise kann das Programm beim Debuggen etwas ausgeben, beim Debuggen jedoch nichts. Oder geben Sie jeweils etwas anderes aus. Oder es kann abstürzen, wenn es debuggt, aber nicht, wenn es nicht debuggt. Oder umgekehrt.
Vorsichtsmaßnahmen und Erläuterungen:
- Zeitunterschiede zählen nicht.
- Dolmetschersprachen sind erlaubt.
- Um den Determinismus zu betonen: Das Verhalten muss sowohl innerhalb als auch außerhalb des Debugging-Kontexts exakt reproduzierbar sein.
- Das Vorhandensein des Debuggers selbst sollte den einzigen Unterschied zwischen den beiden Fällen darstellen.
- Wenn Sie dem Debugger mitteilen, dass er Eingaben (stdin oder argv ENV oder was auch immer) hinzufügen soll, wird das Programm vom Debugger "wie besehen" ausgeführt.
- Das Ändern der Umgebung (z. B. Ausführen in einer virtuellen Maschine oder einem anderen Betriebssystem oder Ändern von Betriebssystemeinstellungen wie z. B. Speicherbeschränkungen) zwischen Debug- und Nicht-Debug-Läufen ist nicht zulässig.
Kürzester Code gewinnt. Ich kann eine Prämie vergeben, die etwas Interessantes über die Funktionsweise von Debuggern preisgibt.

