BUG_ON_bug_on(blk_queued_rq(req));-程序员宅基地

技术标签: 调试  linux debug  kernel  linux  

调试的时候很有用的东西:dump_stack
 
使用前,先在内核配置中把kernel debug选上:
make menuconfig:
kernel hacking-->
kernel debug

 

作用:一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。为什么这些声明会导致 oops跟硬件的体系结构是相关的。大部分体系结构把BUG()和BUG_ON()定义成某种非法操作,这样自然会产生需要的oops。你可以把这些调用当作断言使用,想要断言某种情况不该发生 :
if (bad_thing)
BUG();
或者使用更好的形式:
BUG_ON(bad_thing);//BUG_ON是一个函数接口,一般开发人员自己实现相关函数内容,一般用来判断内核是否出现问题,如果参数为真的话,证明内核出现了//bug,打印BUG信息,然后调用PANIC函数,让系统panic。

可以用panic()引发更严重的错误。调用panic()不但会打印错误消息而且还会挂起整个系统。显然,你只应该在极端恶劣的情况下使用它:
if (terrible_thing)
       panic("foo is %ld/n", foo);

 有些时候,你只是需要在终端上打印一下栈的回溯信息来帮助你测试。此时可以使用dump_stack()。它只在终端上打印寄存器上下文和函数的跟踪线索:
if (!debug_check) {
       printk(KERN_DEBUG "provide some information.../n");
       dump_stack();
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yyp872/article/details/9612501

智能推荐

迁移学习与域适应:两种方法的相似性与差异-程序员宅基地

文章浏览阅读586次,点赞24次,收藏14次。1.背景介绍迁移学习和域适应是两种在机器学习和深度学习领域中广泛应用的方法,它们都旨在解决新的任务时,利用已有的模型或知识来提高学习效率和性能。这两种方法在理论和实践上存在一定的相似性和差异,本文将从以下几个方面进行阐述:背景介绍核心概念与联系核心算法原理和具体操作步骤以及数学模型公式详细讲解具体代码实例和详细解释说明未来发展趋势与挑战附录常见问题与解答1.1 背景介绍..._迁移学习和域适应的区别

在时间序列分析中应用小波变换提取特征_小波分析时间序列特征提取的方法-程序员宅基地

文章浏览阅读315次,点赞5次,收藏5次。在时间序列分析中应用小波变换提取特征1. 背景介绍时间序列分析是工程、金融、气象等众多领域中的一项重要技术,通过对时间序列数据的分析可以发现隐藏其中的规律,为预测未来走势、制定决策提供依据。小波变换作为一种强大的信号处理工具,在时间序列分析中有着广泛的应用。它可以对时间序列进行多尺_小波分析时间序列特征提取的方法

CSS遮罩层-程序员宅基地

文章浏览阅读9.1k次,点赞3次,收藏9次。css遮罩层_css遮罩层

GEOJSON/OFF格式在线转换_在线的geojson-程序员宅基地

文章浏览阅读142次。3D模型在线转换是一个可以进行3D模型格式转换的在线工具,支持多种3D模型格式进行在线预览和互相转换。_在线的geojson

springboot工程打成war部署访问不到工程问题记录_东方通启动war包在内网访问不到-程序员宅基地

文章浏览阅读472次。1 问题现象(1)springboot工程打成jar包部署可以,但是打成war后,部署到服务器,启动成功并可以访问到tomcat,但是一直访问不到项目2 问题原因(1) 打成war包的时候没有指定maven打包的包名,打成的war包名称和项目路径不一样,而tomcat的war包名称就是项目路径,修改maven配置,打成war包名称和项目路径一样解决问题..._东方通启动war包在内网访问不到

[微服务]API网关(API Gateway)_implementation and performance analysis of api gat-程序员宅基地

文章浏览阅读1.5k次。工作中使用了微服务架构,接下来的一段时间里,我会写一系列的文章来介绍微服务架构,同时我也会在github上写一个microservices的应用框架(地址会在后续文章给出)。这篇文章主要讲述了微服务架构中的API Gateway。 翻译和整理自: http://microservices.io/patterns/apigateway.html 一、问题 微服务架构..._implementation and performance analysis of api gateway for microservices arc

随便推点

android controlx1,新款X1最新托文,求反驳~~~~~~~~-程序员宅基地

文章浏览阅读142次。除大、性价比,全新宝马X1还有这么多绝招 (这是--- 转帖,转帖,转帖)有车以后2016-06-03 17:17:11宝马发动机技术阅读(78572)评论(2)http://auto.sohu.com/20160603/n452701663.shtml近日,全新宝马X1在美国速公路安全保险协会(IIHS)进行碰撞测试,新车在5个大项的测试中,总评成绩均为最评价,获得IIHS的..._android:controlx1

QMarkDowner编译-程序员宅基地

文章浏览阅读54次。第一次完整的编译一个工程。哈哈 记录一下准备环境我的环境是win7 x64, python2.7.5 x64的。 python 3.x的我没试过,有需要的朋友可以试一下。安装python2.7.5 x64确保将安装路径加入到Path中PyQt4啊 我的环境是win的 当然要下win版 (PyQt4-4.10.3-gpl-Py2.7-Qt4.8.5-x64.e..._qmarkdowner

npm EPERM: operation not permitted, rename解决-程序员宅基地

文章浏览阅读9.7k次,点赞3次,收藏6次。此问题并非权限问题!执行如下3条命令解决:1.清理npm缓存npm cache clean --force2.升级npm版本npm install -g npm@latest --force3.再次清理npm缓存npm cache clean --force  然后再次运行npm install 即可。转载于:https:/..._npm err! error: eperm: operation not permitted, rename

qt 启动参数 -qws-程序员宅基地

文章浏览阅读262次。运行嵌入式程序在嵌入式QT版本中,程序需要服务器或自己作为服务器程序。服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象。或者使用-qws命令选项启动程序。Using a Single Display使用-qws选项using Mutiple Displays嵌入式版本中运行多个县市同时运行。两种方式可以实现,要么多次运行服务程序,要么..._qt设置启动参数

【机器学习】朴素贝叶斯算法-程序员宅基地

文章浏览阅读1.4w次,点赞22次,收藏147次。朴素贝叶斯(Naive Bayes)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。由于朴素贝叶斯计算联合概率,所以朴素贝叶斯模型属于生成式模型。经典应用案例包括:文本分类、垃圾邮件过滤等。_朴素贝叶斯算法

APT攻击分析-程序员宅基地

文章浏览阅读638次。2019独角兽企业重金招聘Python工程师标准>>> ..._apt - ghostrat - tcp - variant 4

推荐文章

热门文章

相关标签