标签: linux kernel assert
我们有一个内核模块,在断言失败的情况下使用BUG()。该模块适用于ARM体系结构。通常,当使用BUG()时,寄存器和堆栈跟踪将打印在串行控制台上。但是,在某些地方,BUG()不会打印堆栈跟踪,控制台上显示的最后一行是来自断言宏的printk,而不是系统挂起。
堆栈跟踪和寄存器无法在控制台上打印的可能原因是什么?这是一个可以被意外禁用的功能吗?
P.S:在这个平台上,BUG()内的崩溃是用*(int *)0 = 0;
*(int *)0 = 0;