首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

36.Linux驱动调试-根据oops定位错误代码行

26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示: 2.接下来,我们便来分析oops: Unable to handle kernel paging request...: 5 [#1]         //内部错误oops Modules linked in: 26th_segmentfault         //表示内部错误发生在26th_segmentfault.ko...kallsyms.txt里,找到pc值bf000078位于26th_segmentfault驱动里first_drv_open()函数下的bf000000+0x78中 2.5然后将驱动生成反汇编: arm-linux-objdump...而0x56000050是个物理地址,在linux眼中便是个非法地址,所以出错 并找到出错地方位于first_drv_open ()函数下: 3.若发生错误的驱动位于内核的地址值时 3.1还是以26th_segmentfault.c...为例,首先加入内核: #cp 26th_segmentfault.c /linux-2.6.22.6/drivers/char/ //将有问题的驱动复制到字符驱动目录下 #vi Makefile

2.6K80
您找到你想要的搜索结果了吗?
是的
没有找到

41.Linux应用调试-修改内核来打印用户态的oops

1.在之前第36章里,我们学习了通过驱动的oops定位错误代码行 第36章的oops代码如下所示: Unable to handle kernel paging request at virtual address...: 5 [#1]         //内部错误oops Modules linked in: 26th_segmentfault         //表示内部错误发生在26th_segmentfault.ko...接下来,便来分析PC值,Stack栈,到底如何调用的 7.首先来分析PC值,确定错误的代码 1)生成反汇编: arm-linux-objdump -D test_debug > test_debug.dis...从上面看出,主要是将0x12(r3)放入地址0x00(r2)中 而0x00是个非法地址,所以出错 8.分析Stack栈信息,确定函数调用过程 参考: 37.Linux驱动调试-根据oops的栈信息,确定函数调用过程...,生成的文件会非常大, 好处在于不需要动态链接,也可以运行 #arm-linux-objdump -D test_debug > test_debug.dis 8.2最终, 找到main()函数的返回地址在

2.1K50

mysql数据1067错误

mysql数据1067错误 1.配置my.ini 打开配置文件【my.ini】找到【innodb_additional_mem_pool_size=4M】在此下面空一行,添加如下信息【innodb_force_recovery...=4】(mysql数据启动级别设置,设置后会忽略某些配置错误,强制启动!)...2.重启数据 第二步可以重启数据了,在innodb_force_recovery配置的作用下,所有的插入与更新操作将被忽略 3.使用命令导出所有的数据表和数据 mysqldump -t -u(用户名...) -p(密码) 数据名 --default-character-set=utf8 > script.sql 【script.sql为举例】 4.卸载服务相关 卸载服务端相关程序,重新安装相同版本的服务端...5.恢复数据 从第3步备份的文件中恢复所有的数据 mysqldump -t -u(用户名) -p(密码) 数据名 --default-character-set=utf8 < script.sql

1.2K20

-2147467259数据操作错误!

搭建出现的主要问题是: 登录后台的时候提示:-2147467259数据操作错误! 怎么解决?搜索了一下,有些说得是那么个意思,可是我的电脑环境也有些特殊情况。...(比如:文件夹属性中没有“安全”选项卡) 下面整理下: -2147467259数据操作错误的意思是:数据目录无写入权限 修改数据目录或文件权限。...如:鼠标右击数据文件属性-》安全 选项卡 给Internet来宾账户 勾上 [修改]和[写入]的权限即可 或: 给你的文件夹,安全选项卡everyone把全部选上勾,或者给你的匿名账户对数据文件的读写权限...(以上自己看着弄,不过还是建议就改数据文件的) 对于其他一些问题: 我的文件夹属性中没有“安全”选项卡的一些知识!

73730

Linux下的常见错误配置

经过对大量客户的配置审计与渗透测试,我们总结出了一些Linux系统下的常见配置错误。...我们相信总结、回顾这些常见错误可以在以后为我们节省更多时间与资源,更重要的是可以帮助系统管理员,使其服务器更加安全可靠。...五个常见配置错误如下: 1、用户/home目录的权限 2、系统中的getgid与setuid程序 3、全局可读/可写的文件/目录 4、使用包含漏洞的服务 5、默认的NFS挂载选项或不安全的导出选项 1、...用户的/home目录权限 在大部分Linux发行版中,/home目录的默认权限是755,即任何登录系统的用户都可以访问其他用户的/home目录。...这些设置在配置Linux服务器时经常会被忽视,而恰恰是这些不当配置,使攻击者或恶意用户可以非法获得大量信息,或者提升自己在服务器中的权限。

1.7K60

System.map文件的作用

什么是一个Oops? 在自己编制的程序中最常见的出错情况是什么?是段出错(segfault),信号11。 Linux内核中最常见的bug是什么?也是段出错。...Linux内核是非常 健壮的;一个oops可能仅杀死了当前进程,并使余下的内核处于一个良好的、稳定的 状态。 一个oops并非是内核死循环(panic)。...为了帮助我们使用oops含糊的输出,Linux使用了一个称为klogd(内核日志后台程序)的 后台程序,klogd会截取内核oops并且使用syslogd将其记录下来,并将某些象c010b860 的信息转换成我们可以识别和使用的信息...有一些驱动程序将使用System.map来解析符号(因为它们与内核头连接而非glibc等),如果没有System.map文件,它们将不能正确地工作。...System.map文件,那么你将定期地看到这样一条信息: System.map does not match actual kernel (System.map与实际内核不匹配) 不是一个致命错误

2.4K10

Linux详解

最近有小伙伴问我程序相关的问题。程序的存在很大程度上提高了程序的复用性、可维护性,但是程序的应用往往对于初学者来说有些摸不清头脑,所以这一期本文从Linux的角度谈谈Linux下的程序。...Windows和Linux系统的本质不同,所以这两个系统的格式不同,同样也是不兼容的,本文不讲Windows下的,我们只关注Linux下的程序 例如我们常用的标准C/C++、Qt、GTK等...共享命名 在Linux系统中我们经常看到同一个共享还有软连接文件指向共享。...动态加载如何实现 在Linux系统中,实现动态加载的调用,有一个用于打开、查找符号、处理错误和关闭的API。...Linux文件制作 本节只针对Linux的概念及分类做详细阐述,下一节将详细讲解如何通过程序创建属于我们自己的文件,包括创建静态、共享、动态加载的实现等

2K40

【Rust每周一】failure - 错误处理

而今天我们就来简单介绍一下failure以及其背后的错误处理哲学。 简介 failure是rust-lang-nursery下的一个,可以说是根正苗红的rust了。...定义自己的Fail实现:定义一个自己的错误类型,比较适合需要对错误有较多控制的。 使用Error:使用Error统一处理多处不同的返回错误。比较适合不太需要详细检查error内容的应用或。...使用Error和ErrorKind对:使用Error类型和ErrorKind枚举创建一个健壮的错误类型。比较适合作为大型的公共API。 使用字符串 这是一个比较简便的方法,推荐在原型阶段使用。...这样做有三大好处: 可以遍历所有的错误 可以完全控制错误的表达 调用者可以直接析构出错误 可以看到在例子中,我们可以给错误增加想要的信息。...小结 错误的坑真是深似水,这里也只是对failure这一著名的错误处理做了初步的介绍,祝大家一起在错误中成长~

1.2K40
领券