Я использую этот макрос, он использует BUG (), но добавляет больше информации, которую я обычно использую для отладки, и, конечно, вы можете отредактировать его, добавив дополнительную информацию, если хотите:
#define ASSERT(x) \
do { if (x) break; \
printk(KERN_EMERG "### ASSERTION FAILED %s: %s: %d: %s\n", \
__FILE__, __func__, __LINE__, #x); dump_stack(); BUG(); \
} while (0)