linux 内核态调试函数BUG_ON()与WARN_ON区别
来源:互联网 发布:剑三脸型数据不合法 编辑:程序博客网 时间:2024/05/17 13:09
linux 内核态调试函数BUG_ON()
作用:一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。
当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。为什么这些声明会导致 oops跟硬件的体系结构
是相关的。大部分体系结构把BUG()和BUG_ON()定义成某种非法操作,这样自然会产生需要的oops。你可以把这些调用当作断言使用,想要断言某种情况不该发生:
if (bad_thing)
BUG(); //需要linux 内核开启General setup->Configure standard kernel features->BUG() support
或者使用更好的形式:
BUG_ON(bad_thing);
可以用panic()引发更严重的错误。调用panic()不但会打印错误消息(Oops)而且还会挂起整个系统。显然,你只应该在极端恶劣的情况下使用它:
if (terrible_thing)
panic("foo is %ld\n", foo);
if (!debug_check) {
printk(KERN_DEBUG "provide some information...\n");
dump_stack();
}
二.WARN_ON
而WARN_ON则是调用dump_stack,打印堆栈信息,不会OOPS
#define WARN_ON(condition) do { /
if (unlikely((condition)!=0)) { /
printk("Badness in %s at %s:%d/n", __FUNCTION__, __FILE__,__LINE__); /
dump_stack(); /
} /
} while (0)
具体的调用情况与中断有关,可以通过linux中断机制来学习。
- linux 内核态调试函数BUG_ON()与WARN_ON区别
- linux 内核态调试函数BUG_ON()
- linux 内核态调试函数BUG_ON()
- linux 调试语句BUG_ON WARN_ON dump_stack panic
- BUG_ON && WARN_ON
- 内核 BUG_ON 以及WARN_ON 用法作用
- linux中BUG_ON和WARN_ON解析
- BUG_ON and WARN_ON
- Linux内核调试之使用BUG_ON 和dump_stack
- BUG_ON()和WARN_ON()的用法
- linux内核中的BUG 和 BUG_ON
- linux内核中的BUG 和 BUG_ON
- linux系统调用、库函数和内核函数关系与区别
- linux系统调用、库函数和内核函数关系与区别
- linux panic 和 bug_on
- linux panic 和 bug_on
- panic与BUG_ON
- linux内核调试平台与内核调试技术
- Mybatis中文模糊搜索匹配不上的问题
- 文章标题
- MAC OSX系统使用gdb编译程序时的报错处理
- spring mvc 静态资源引用css,js,images样式失效问题
- java程序员面试简历注意事项
- linux 内核态调试函数BUG_ON()与WARN_ON区别
- 算法之贪心算法
- React学习笔记_React中元素与组件的区别
- 设计模式之--工厂方法和抽象工厂
- CUDA --- Fundamental Optimization Strategies
- ImportError: The Python Imaging Library (PIL) is required to load data from jpeg files
- next_permutation
- Win32创建一个简单的窗口
- Python——Excel文件读写