mac*_*ows 28 linux assert assertions linux-kernel assertion
我assert()在Linux中有一个问题:我可以在内核中使用它吗?
如果不是,你通常使用什么技术,例如我不想输入NULL指针?
Nem*_*emo 42
相应的内核宏是BUG_ON和WARN_ON.前者适用于您希望使内核崩溃并使系统停机(即无法恢复的错误).后者适用于您希望将内容记录到内核日志(可通过查看dmesg)的情况.
正如@Michael所说,在内核中,你需要验证来自用户空间的任何东西,只需处理它,无论它是什么.BUG_ON和WARN_ON用于捕获您自己的代码中的错误或硬件问题.
一种选择是使用宏BUG_ON().它将printk是一条消息,然后panic()(即崩溃)内核.
http://kernelnewbies.org/KernelHacking-HOWTO/Debugging_Kernel
当然,这只应该用作最后的错误处理策略(就像assert)...
好吧,取消引用空指针会产生一个 oops,你可以用它来找到有问题的代码。现在,如果你想 assert() 一个给定的条件,你可以使用
BUG_ON(condition)
Run Code Online (Sandbox Code Playgroud)
一种不太致命的机制是 WARN_ON,它会在不使内核崩溃的情况下生成回溯。
| 归档时间: |
|
| 查看次数: |
31552 次 |
| 最近记录: |