linux内核定位方法总结1 ECC hung-task和原子操作 反汇编调用栈

24 篇文章 0 订阅
22 篇文章 1 订阅

1 CPU支持ECC的话打开ECC,并且在系统异常中断的时候打印出来,因为内存多bit ECC会导致系统异常。

MCHECK_EXCEPTION(0x200, Machine, machine_exception)
    =>static struct cpu_spec __initdata cpu_specs[]
        /* e500v2 */
        .machine_check      = machine_check_e500,
        .platform       = "ppc8548",
        machine_check_e500
            =>unsigned long reason = get_mc_reason(regs);
            =>if (reason & MCSR_BUS_WBERR)
                printk("Bus - Write Data Bus Error\n");
            =>打印regs->nip//出现异常等指令地址
bus有一种可能性是内存出现ECC错误,可以在这里打印内存ECC错误寄存器信息

2 内核的hung task检测;
3 内核的原子操作不能有休眠动作的检测
“BUG: sleeping function called from invalid context at ……”(might_sleep函数说明)
http://blog.csdn.net/hp0773/article/details/12658501
4 coredump。用户态异常,没有挂接私有信号处理函数,导致coredump,详见《信号处理学习心得》
注意

#ulimit -c //真相
0
#ulimit //假象
ulimited
需要修改 
#ulimit -c unlimited

修改后
再查
#ulimit -c
ulimited

调试程序,会在当前路径生成 core
可以修改路径:
echo /root/core_%p > /proc/sys/kernel/core_pattern
生成的core在/root目录下,后缀是调试程序的进程号

5关于死锁
一次spinlock死锁故障的定位(太经典,收藏!) http://blog.csdn.net/lqxandroid2012/article/details/53581076
spin_lock浅析【转】 - 张昺华-sky - 博客园 http://www.cnblogs.com/sky-heaven/p/7121582.html =》这个人的博客有很多好文章

驱动程序的调测方法与技巧 http://blog.csdn.net/lichangc/article/details/43272457

如下文章写得挺好
linux kernel oops linux 异常分析
http://www.cnblogs.com/wahaha02/p/5363793.html

根据PPC反汇编代码分析堆栈内容
http://blog.csdn.net/lijzheng/article/details/38796525

PowerPC构架应用程序二进制接口(ABI)及堆栈帧详解
http://blog.sina.com.cn/s/blog_70dd16910100ypf2.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值