zoukankan      html  css  js  c++  java
  • linux驱动调试--段错误之oops信息分析

    linux驱动调试--段错误之oops信息分析 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923447

    1. 分析coredump打印信息

    2. 确定发生错误的函数

    看发生错误的地方的函数和pc

    PC is at segment_test_open+0x14/0x1c [segdrv]

     

    看pc值:

    pc : [<7f000014>]    lr : [<800d958c>]    psr: 20070013

    看Backtrace:

    [<7f000014>] (segment_test_open [segdrv]) from [<800d958c>] (chrdev_open+0xa4/0x178)
    [<800d958c>] (chrdev_open) from [<800d3e1c>] (do_dentry_open.isra.17+0x110/0x294)

    一、直接确定发生错误的函数
    看到这句 “PC is at segment_test_open+0x14/0x1c [segdrv]”,出现错误时我们最关注的就是PC值,因为它就是发生错误
    的指令的地址,这里我们可以看到错误发生在函数 segment_test_open 的0x14处,0x1c代表这个函数的总长度(汇编代码)

    二、根据PC值确定发生错误的函数
    有时候不会直接告诉你发生在哪个函数,而是只把PC值告诉你

    如果发生的错误函数是属于驱动模块的

    # arm-none-linux-gnueabi-objdump -D first_drv.ko > first_drv.dis

    如果发生的错误函数是属于内核的
    这个时候和发生在模块里类似,不过这里要反汇编整个内核:
    # arm-none-linux-gnueabi-objdump -D vmlinux > vmlinux.dis

  • 相关阅读:
    头指针与头结点的异同
    C:Users用户名AppData里面的文件可以删除吗
    mac os x在PC上安装
    迷宫问题
    对称自反传递
    判断
    离散实验模板
    离散实验二
    tp.5.0.21抛出错误
    php复制整个文件夹,此方法可过滤掉.svn文件夹
  • 原文地址:https://www.cnblogs.com/mylinux/p/5846739.html
Copyright © 2011-2022 走看看