Let's make it happen – a kernel bug! Exciting, yes!?
Okay, to create a kernel bug, we must ensure that when we remove (unload) the kernel module, the API that cleans up (deletes) all the debugfs files, debugfs_remove_recursive(), is not invoked. Thus, after each module is removed, our debugfs directory and files seem to be present! However, if you try and operate on – read/write – any of them, they'll be in an orphaned state and, hence, upon trying to dereference its metadata, the internal debugfs code paths will perform an invalid memory reference, resulting in a (kernel-level) bug.
In the kernel space, a bug is a very serious thing indeed; in theory, it should never, ever happen! This is called an Oops; as part of handling this, an internal kernel function is called, which dumps useful diagnostic information via printk to the in-memory kernel log buffer, as well as to the console device (on production...