Tantangannya adalah untuk menulis program deterministik (bahasa / OS apa pun) yang tidak menggunakan argumen atau input lain dan berperilaku berbeda dalam debugger dari bagaimana ia berperilaku ketika tidak sedang di-debug. .
Misalnya, program dapat menampilkan sesuatu saat sedang di-debug tetapi tidak menghasilkan apa-apa saat tidak di-debug. Atau menampilkan sesuatu yang berbeda di setiap kasus. Atau mungkin macet ketika sedang di-debug tapi tidak macet saat tidak di-debug. Atau sebaliknya.
Peringatan dan klarifikasi:
- Perbedaan waktu tidak dihitung.
- Bahasa yang ditafsirkan diizinkan.
- Untuk menekankan determinisme: perilaku harus benar-benar dapat direproduksi baik di dalam maupun di luar konteks debugging.
- Kehadiran debugger itu sendiri harus menjadi satu-satunya perbedaan antara dua kasus.
- Memberitahu debugger untuk menambahkan input (stdin atau argv ENV atau apa pun) curang, debugger harus menjalankan program "apa adanya".
- Mengubah lingkungan (misalnya berjalan di mesin virtual atau OS yang berbeda, atau mengubah pengaturan OS seperti batas memori) antara proses debug dan non-debug tidak diizinkan.
Kode terpendek menang. Saya dapat memberikan hadiah yang mengungkapkan sesuatu yang menarik tentang cara kerja debuggers.

