[授权发表]如何快速定位 Linux Panic 出错的代码行

当Linux内核出现Panic时,如何快速定位出错的代码行是关键。文章详细介绍了问题描述、分析及解决方案,包括addr2line、gdb等工具的使用,强调了调试符号的必要性,并提供了配置选项以获取更多调试信息。
摘要由CSDN通过智能技术生成

最初发表:泰晓科技 – 聚焦嵌入式 Linux,追本溯源,见微知著!
原文链接:如何快速定位 Linux Panic 出错的代码行
评论说明:为更好地聚合大家的讨论,请到上面原文的评论区回复。


问题描述

内核调试中最常见的一个问题是:内核Panic后,如何快速定位到出错的代码行?

就是这样一个常见的问题,面试过的大部分同学都未能很好地回答,这里希望能够做很彻底地解答。

问题分析

内核Panic时,一般会打印回调,并打印出当前出错的地址:

kernel/panic.c:panic():

    #ifdef CONFIG_DEBUG_BUGVERBOSE
	    /*
	     * Avoid nested stack-dumping if a panic occurs during oops processing
	     */
	    if (!test_taint(TAINT_DIE) && oops_in_progress <= 1)
		    dump_stack();
    #endif

dump_stack()调用关系如下:

dump_stack() --> __dump_stack
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值