在移植dm9000 时被一个错误困扰了很久,当时手里只有printk调试手段,觉得自己应该升级下了,先学习了根据oops信息来调试。

先构造一个错误,insmod后抛出如下信息

我们着重看这几句

PC is at memcpy+0x8c/0x29c c0148080
pc : [] lr : [<74736574>] psr: 00000013

回溯信息
Backtrace:
[] (hello_init+0x0/0x38 [dbug]) from []

看到这些信息大概可以知道问题所在了,我们接着把文件objdump一下
执行 arm-linux-objdump -D dbug.ko > dbug.inf

根据oops信息,PC is at memcpy+0x8c/0x29c c0148080 是在memcpy函数出错,在回溯信息里[] (hello_init+0x0/0x38 [dbug]) from [] 在hello_init 的0x38偏移处调用的发生错误的函数。

问题到这里就差不多了,后面会陆续跟几种调试手段。随便附上这次的测试代码

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void)
{char *p = NULL;memcpy(p, "test", 4);printk(KERN_ALERT "Hello, world\n");return 0;
}
static void hello_exit(void)
{printk(KERN_ALERT "Goodbye, cruel world\n");
}

linux驱动调试--oops信息相关推荐

  1. Linux驱动调试中的Debugfs的使用简介

    Linux驱动调试中的Debugfs的使用简介 (2012-03-31 14:14) 在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设 ...

  2. Linux驱动调试中的Debugfs的使用简介 CONFIG_DEBUG_FS 的功能与配置

    Linux驱动调试中的Debugfs的使用简介 (2012-03-31 14:14) 在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设 ...

  3. linux驱动调试--段错误之oops信息分析

    原文地址 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923447 发生段错误原因就是访问 ...

  4. Linux驱动段错误,linux驱动调试--段错误之oops信息分析

    下面根据Oops信息来分析一下段错误 first_drv.c 点击(此处)折叠或打开 #include #include #include #include #include #include #in ...

  5. linux驱动调试--段错误之栈信息分析

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923529 接着上一篇来分析一下Oop ...

  6. linux驱动获取函数失败信息,linux驱动调试--段错误之栈信息分析

    接着上一篇来分析一下Oops的栈 s3c2440平台 关于调试源码和整个Oops信息请参考上一篇博文,这里只再次贴出关于栈的信息 Stack: (0xc3a61e30 to 0xc3a62000) 1 ...

  7. 37.Linux驱动调试-根据oops的栈信息,确定函数调用过程

    上章链接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我们分析了oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程 1. ...

  8. Linux驱动之oops错误:addr2line工具定位错误

    前言 在编写linux驱动程序时,最让人头疼的,莫不是内核发生了oops错误,并打印了一大堆错误信息如下: Unable to handle kernel NULL pointer dereferen ...

  9. linux驱动调试之段错误分析_根据pc值确定出错的代码位置

    我们知道在内核里面不能够处理指向0地址的指针,我们故意引入这样一个指针,并根据打印的出错信息来进行分析,下面是我们的程序: #include <linux/module.h> #inclu ...

最新文章

  1. Android应用开发:网络编程-2
  2. Struts 2的基石——拦截器(Interceptor)
  3. 使用 CodeIgniter 框架快速开发 PHP 应用(五)
  4. TensorRT(6)-INT8 inference
  5. bzoj1679[Usaco2005 Jan]Moo Volume 牛的呼声*
  6. 010-python基础-数据类型-字符串操作
  7. PAT:1032. Sharing (25) AC
  8. Santander价值预测挑战(Feature Select + BayesSearchCV + LightGBMRegressor)
  9. [渝粤教育] 南京师范大学 中国古代文学(一) 参考 资料
  10. 项目启动报错:Caused by: com.atomikos.recovery.LogException: Log already in use? tmlog in ./
  11. 在第四代计算机期间全世界逐步进入了,1、在第四代计算机期间内,计算机的应用逐步进入到.docx.docx...
  12. Java Emitter Template
  13. 实体链接在OPPO小布助手和OGraph的实践应用
  14. 2021-6-9-今日收获
  15. IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解
  16. idea 断点线程_在IntelliJ IDEA中多线程并发代码的调试方法
  17. 5分钟理解Iass Pass SasS三种云服务区别
  18. 如何评估项目的开发时间
  19. HTML中的父元素与子元素
  20. 【自用】Codeforce入门六题题解

热门文章

  1. search-guard 在 Elasticsearch 2.3 上的运用
  2. 初次就这么给了你(Django-rest-framework)
  3. 前端每周清单第 30 期:WebVR 指南,Vue 代码分割范式,理想的 React 架构特性
  4. DP备份任务失败原因解析
  5. XiaoKL学Python(C)__future__
  6. 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
  7. spring in action 读书笔记
  8. 设计模式 之 《组合模式》
  9. 万里长征,始于足下——菜鸟程序员的学习总结
  10. 红外线摄像机的选择与使用及原理