WARN_ON()
DEBUG_ON()
不是一个标准的 Linux 内核宏,它可能是特定内核版本或者特定内核配置中的一个宏,或者在某些内核代码中自定义的宏。- 一般来说,如果存在
DEBUG_ON()
,它可能被用作一个调试开关,用于在调试版本中启用某些调试代码或打印调试信息。 DEBUG_ON()
通常不会像BUG_ON()
那样触发内核崩溃,而是用于控制调试信息的输出。
在Kernel中追加 BUG_ON() 可以查看内核栈调用信息
例如 代码中追加如下:
输出串口log如下:
GPT 解析结果:
BUG_ON()
BUG_ON()
是一个断言宏,它用于捕捉代码中的编程错误。- 当传递给
BUG_ON()
的条件为真时,内核会触发一个 BUG,并打印出错误信息,通常包括文件名、行号和函数名。 BUG_ON()
通常用于捕捉那些不应该发生的情况,比如代码中的逻辑错误或不一致的状态,它表明代码中存在严重问题。- 在某些架构上,
BUG_ON()
可能会导致内核触发一个断断点异常(breakpoint trap),从而进入调试器或导致系统崩溃。
其中 BUG()
宏会导致内核打印出错误信息并触发崩溃。
参考文档:
Linux内核之BUG_ON()和WARN_ON()_linux bug()-CSDN博客