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

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

26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示: 2.接下来,我们便来分析oops: Unable to handle kernel paging request...(PS:若不配置,也可以直接通过栈来分析函数调用过程,在下章会分析到:http://www.cnblogs.com/lifexy/p/8011966.html) 2.2而有些内核的环境不同,opps也可能不会打印出上面的...而0x56000050是个物理地址,在linux眼中便是个非法地址,所以出错 并找到出错地方位于first_drv_open ()函数下: 3.若发生错误的驱动位于内核的地址值时 3.1还是以26th_segmentfault.c...为例,首先加入内核: #cp 26th_segmentfault.c /linux-2.6.22.6/drivers/char/ //将有问题的驱动复制到字符驱动目录下 #vi Makefile...-D vmlinux > vmlinux.dis 将整个内核反汇编, vmlinux:未压缩的内核 3.4 vi vmlinux.dis,然后通过oops信息的PC值直接来查找地址即可 接下来下章便通过栈信息来分析函数调用过程

2.6K80

Linux内核源码分析方法

Linux内核源码分析方法 一、内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。...闲话少叙(已经罗嗦了很多了,囧~),下面我就来分享一下自己的Linix内核源码分析方法。 二、内核源码难不难?...3.分析内核代码的方法不够合理。面对大量的并且复杂的内核代码,如果不从全局的角度入手,很容易陷入代码细节的泥淖中。内核代码虽然庞大,但是它也有它的设计原则和架构,否则维护它对任何人来说都是一个噩梦!...三、内核源码分析方法 第一步:资料搜集 从人认识新事物的角度来讲,在探索事物本质之前,必须有一个了解新鲜事物的过程,这个过程是的我们对新鲜事物产生一个初步的概念。...这里使用的手段和之前搜集资料使用的方法基本一致,另外我们也可以使用sourceinsight提供的转到定义等功能查看它的定义,或者使用LKML(Linux Kernel Mail List)查阅,实在不行我们还可以到

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

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

1.在之前第36章里,我们学习了通过驱动的oops定位错误代码行 第36章的oops代码如下所示: Unable to handle kernel paging request at virtual address...5.接下来,继续修改内核,使应用程序的oops也打印栈信息出来 在驱动的oops里有"Stack: "这个字段,搜索"Stack: "看看,位于哪个函数 5.1如下图所示, 找到位于__die()函数中...接下来,便来分析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-gcc -o -static test_debug test_debug.c //-static 静态链接

2.1K50

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

在上章里,我们分析oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置...  2.我们先来分析上图的栈信息,又是怎样的过程呢?...: 若c()函数出问题后,内核就会打印b()函数的内容(0x03,LR), 打印a()函数的内容(0x02,LR),直到sp到达栈顶为止 其中lr值,便代表各个函数的调用关系 3.接下来我们便以上章的oops...里的栈信息来分析 在上章里,我们找到PC值bf000078在26th_segmentfault驱动模块first_drv_open()函数下出错。...c008d888位于内核的某个函数里 3.2 然后将内核进行反汇编 在内核源码的根目录下: # arm-none-linux-gnueabi-objdump -D vmlinux > vmlinux.txt

2K50

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

上章链接入口: https://blog.csdn.net/qq_16933601/article/details/104327937 在上章里,我们分析oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程...1.上章的oops栈信息如下图所示: ?...9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置 2.我们先来分析上图的栈信息,又是怎样的过程呢?...若c()函数出问题后,内核就会打印b()函数的内容(0x03,LR), 打印a()函数的内容(0x02,LR),直到sp到达栈顶为止   其中lr值,便代表各个函数的调用关系 3.接下来我们便以上章的oops...,所以c008d888位于内核的某个函数里 3.2 然后将内核进行反汇编   在内核源码的根目录下: # arm-none-linux-gnueabi-objdump -D vmlinux > vmlinux.txt

89930

Linux性能分析工具与图形化方法

本文介绍三个常用的工具的入门级使用及图形化方法,供大家参考。 本文介绍perf、gprof和valgrind三个性能分析工具,及其分析结果图形化的方法,旨在让大家更快的上手使用工具。...出于篇幅的限制,本文不会对每种工具的使用参数及结果分析做详细的介绍,只做入门级的使用说明,更多详细的说明大家请google一下。 每个工具的介绍会分成简介、使用说明、图形化方法三个部分。...long sum=0; accu(int_array,sum); } 这段代码在V615机器上执行了31s,最大CPU使用率为8.3%(top结果) 一、Perf 1.1 简介 Perf是内置于Linux...三、Valgrind 3.1 简介 valgrind不是linux的原生工具,需要自行安装。...这个文件直接分析起来有些困难,必须借助图形化的方式来浏览 3.3 图形化方法 valgrind的图形化需要借助kcachegrind.exe,大家可以自行下载,下载后在windows运行即可。

8.5K311

分析方法之多维度拆解分析方法

这就是多维度拆解分析方法。 那么多维度拆解分析方法一般由那几个角度去拆解呢? 一般我们会从指标的构成和业务流程两个角度去拆解。...还是举个栗子来说吧 比如说有个APP 的日用户留存率下降了5%,该怎么分析呢? 我们就从指标的构成和业务流程两个角度去拆解分析。...首先我们从高用户进行细分,包括新老,渠道,活动,画像等多个维度,然后再分析每个维度下不同用户的次日留存率,通过这种方式来定位到导致留存率下降的用户群体是谁。...通过指标分析到目标客户群体后,我们可以具体情况具体分析,通过参考内部-外部因素来进行分析。...采用PEST分析(宏观经济环境分析),政治(政策影响)、经济(短期内主要是竞争环境,如对竞争对手的活动)、社会(舆论压力、用户生活方式变化、消费心理变化、价值观变化等偏好变化)、技术(创新解决方案的出现

1K21

Linux pstore 实现自动“抓捕”内核崩溃日志

作者简介 廖威雄,就职于珠海全志科技股份有限公司,负责Linux IO全栈研发、性能优化、开源社区开发交流、Linux 内核开源社区pstore/blk,mtdpstore模块的作者、大客户存储技术支持...简介 pstore文件系统(是的,这是个文件系统)是Persistent Storage的缩写,最早在2010年由 Tony Luck 设计并合入Linux主分支,设计的初衷是在内核Panic/Oops...时能自动转存内核日志(log_buf),在Panic重启后,把转存的日志以文件形式呈现到用户空间以分析内核崩溃问题。...(因为功能的相似,我实现了mtdpstore用于替代mtdoops) kdump 如果说pstore是个轻量级的内核崩溃日志转存的方案,kdump则是一个重量级的问题分析工具。...当然这方法不适用于转存Panic日志,只能用于Oops或者其他前端: # insmod pstore.ko compress=off # insmod pstore_zone.ko # truncate

5.1K62

Linux 常见性能分析方法论介绍(业务负载画像、下钻分析、USE方法论,检查清单)

开展那些工作对性能分析有帮助?(性能分析方法论) 如何处理性能分析工具提取的数据,需要机遇性能分析方法论,方法论是一个可以遵循的过程,指导从哪里开始,中间需要做些什么,从哪里结束。...第二个问题,可以通过火焰图来分析,关于 火焰图 Demo:Linux CPU 性能分析工具火焰图(Flame Graphs)认知 下钻分析 下钻分析的工作过程是从一个指标开始,然后将这个指标拆分成多个组成部分...USE方法论 通过 USE 方法论来对资源的使用情况进行分析 使用率 饱和度 错误 使用当前方法第一补是 绘制软件或者硬件资源图,然后一次对资源进行上述检查 这个方法论的优势之一是,它以重要的问题作为开始...关于 USE 了解更多以及Demo :关于Linux中使用USE(使用率/饱和度/错误)方法分析系统性能的一些笔记 检查清单法 性能分析检查清单可以列出一系列工具和指标,用于对照运行和检查。...下面会给出两个清单, 一个使用了传统(非BPF)工具,比较适合于快速分析(开始的 60 秒); 清单快速分析Demo: Linux 60秒快速性能分析操作手册 另一个清单是适合及早使用的 BCC 工具列表

8510

Linux内存占用常用的几个分析方法,你确定都知道?

因此,对于 Linux 管理员来说,在日常工作中能够熟练在 Linux 系统下检查内存的运行状况就变得尤为重要! 查看内存的运行状态并非难事,但是针对不同的情况使用正确的方式查看呢?...一口君整理了几个 个非常实用的 Linux 内存查看方法 1、free命令 2、 vmstat命令 3、 /proc/meminfo 命令 4、 top命令 5、 htop 命令 6、查看进程内存信息...常见问题处理 常见问题及解决方法 如果r经常大于4,且id经常少于40,表示cpu的负荷很重。 如果pi,po长期不等于0,表示内存不足。...常见性能问题分析 IO/CPU/men连锁反应 1.free急剧下降 2.buff和cache被回收下降,但也无济于事 3.依旧需要使用大量swap交换分区swpd 4.等待进程数,b增多 5.读写IO...查看方法: cat /proc/meminfo 2.

2.6K20

九大数据分析方法-单指标分析方法与多指标分析方法

1 单指标分析方法 顾名思义,用单个数据指标进行数据分析 适应场景:接触新任务,不了解数据情况,不了解业务形态 优先看KPI指标(收入/成本等)关键指标,再看细节 1.1 周期性分析法 收入的产生,...1.2 结构分析法 结构分析法:通过观察内部结构,来分析指标走势的方法。...2 多指标分析方法 使用多指标分析法,可以综合收入与成本两个指标,评价业务,并了解收入/成本是怎么产生的,给出业务建议。...2.2 指标拆解法 指标拆解法是将一个大指标(通常是收入、成本这种关键指标)拆成若干个新的、有业务含义的子指标,通过解读子指标来分析问题的方法。拆解一个指标,能解读出更多信息。...,从而发现流程问题的方法

44130

Linux 性能分析工具 nmon for Linux

将数据保存到一个逗号分隔的文件以供分析,并进行长时间数据捕捉 配合使用 nmon Excel 2000 电子表格分析器,该分析器能够加载 nmon 输出文件并自动为你创建几十个图形,你可以基于这些图形研究或填写性能报告...将这些数据直接放到一个 rrd 或者其他类型的数据库以备你自己分析使用。...下载源码编译 - 点击 编译 nmon 数据分析 保存好 nmon 数据以后,你可以使用以下几种工具之一来对其进行分析并生成统计图。...下载 nmon Excel 电子表格分析器 这个比较原始工具多年前由 Stephen Atkins 研发 你可以通过性能工具论坛请求支持 Linux 用户可能并不喜欢使用微软电子表格的想法,他们很难自动生成图形...,可以通过一个浏览器对分析情况进行查看 现在 - 开源了 nmon for Linux 是一个单一的 5000 行代码的源码文件和单一的 makefile。

6.8K60
领券