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

如何解读内核oops

[ 867.142164] Internal error: Oops: 96000045 [#1] SMP 96000045表示错误码。后面[]内数值是与页面有关oops信息被显示次数。...之后显示内核重要特性SMP和PREEMPT被显示配置情况。这条信息所在内核启用了SMP支持,所以只显示SMP。 96000045这种错误码我也是第一次见,内核中也没找到。...到这里也基本可以确定,是w1值赋值给0地址时出错了。 其他方法 gdb ➜ oops_module aarch64-linux-gnu-gdb -q ....➜ oops_module aarch64-linux-gnu-addr2line -e ....内核里面有很多脚本工具,位于linux/scripts/,里面有一个decodecode工具可以用来转换机器码,decodecode脚本可以在没有源代码或符号表情况下,将oops异常log作为输入就可以解析出错误位置汇编代码

2K30

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

1.在之前第36章里,我们学习了通过驱动oops定位错误代码行 第36章oops代码如下所示: Unable to handle kernel paging request at virtual address...接下来,我们便来配置内核,从而打印应用程序oops 2.首先来搜索oops:Unable to handle kernel打印语句,看在哪个函数打印 如下图所示,找到位于__do_kernel_fault...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栈信息,确定函数调用过程

2.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    定位Oops具体代码行

    来自Linus Torvalds讨论: https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41.../ed9c0a0cfcd31111 又,http://kerneltrap.org/Linux/Further_Oops_Insights         例如这样一个Oops:                ...注意,OopsCode:行,会把导致Oops第一条指令,也就是EIP第一个字节, 用尖括号括起来。...补充: 为了使汇编代码和C代码更好对应起来, Linux内核Kbuild子系统提供了这样一个功能: 任何一个C文件都可以单独编译成汇编文件,例如: make path/to/the/sourcefile.s...另外, 内核源代码目录./scripts/decodecode文件是用来解码Oops: ./scripts/decodecode < Oops.txt (我没用过,就只提一下。)

    1.1K20

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

    1.当驱动有误时,比如,访问内存地址是非法,便会打印一大串oops出来 1.1以LED驱动为例 将open()函数里ioremap()屏蔽掉,直接使用物理地址GPIOF,如下图所示: 1.2然后编译装载...所以oops最重要内容还是这一段: pc : [] 2.3那么如何来确定,该PC值地址位于内核函数,还是我们装载驱动模块?...而0x56000050是个物理地址,在linux眼中便是个非法地址,所以出错 并找到出错地方位于first_drv_open ()函数下: 3.若发生错误驱动位于内核地址值时 3.1还是以26th_segmentfault.c...为例,首先加入内核: #cp 26th_segmentfault.c /linux-2.6.22.6/drivers/char/ //将有问题驱动复制到字符驱动目录下 #vi Makefile...,然后通过oops信息PC值直接来查找地址即可 接下来下章便通过栈信息来分析函数调用过程

    2.8K80

    linux系统中socket错误码:EINTR和EAGAIN处理

    早期UNIX系统做法是:中断系统调用,并让系统调用失败, 比如read返回 -1, 同时设置 errno 为EINTR中断了系统调用是没有完成调用,它失败是临时性,如果再次调用则可能成功,这并不是真正失败...) 非阻塞系统调用,由于资源限制/不满足条件,导致返回值为EAGAIN 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见一个错误(比如用在非阻塞操作中)。...如:首先是把套接字设置为异步了,然后在使用write发送数据时采取方式是循环发送大量数据;由于是异步,write\send将要发送数据提交到发送缓冲区后是立即返回,并不需要对端确认数据已接收...Linux – 非阻塞socket编程处理EAGAIN错误 在linux进行非阻塞socket接收数据时经常出现Resource temporarily unavailable,errno代码为11(...早期UNIX系统做法是, 中断系统调用,并让系统调用失败, 比如read返回 -1, 同时设置 errno 为EINTR中断了系统调用是没有完成调用,它失败是临时性,如果再次调用则可能成功,这并不是真正失败

    6.2K10

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

    上章链接入口: https://blog.csdn.net/qq_16933601/article/details/104327937 在上章里,我们分析了oopsPC值在哪个函数出错 本章便通过栈信息来分析函数调用过程...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

    94630

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

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

    2.1K50

    令人头疼错误码(上)

    什么是错误码 我并没有找到错误码明确定义,各公司对错误码定义相同,个人比较倾向于亚马逊官方文档给出定义:通过对错误码定义,能够简单帮助用户或开发者识别和理解异常性质,错误码与错误不是一对一关系,...B服务错误码进行转移处理,直接抛出错误码导致A调用方逻辑判断错误。...; 针对第一点: 谷歌: 上面已经讲过,谷歌错误码只有16个,并且严格定义了每个错误码表示错误类型,因此不存在错误码重叠情况。...2)调用组件、公共库等返回错误码,务必收敛为业务相关错误码。例如注册接口不应该把DB写入失败错误码返回,而是转译为注册失败。...问题三:错误码细分粒度不统一 错误码过细: 错误码定义过细过多、过度随意,将会导致调用方对错误处理逻辑复杂,无法很好错误码进行转义或收敛。

    2.3K20

    Oops周末一题(兔哥哥儿种花生)

    这里非常感谢“Oops”学弟,特别说明本部分是小白学弟“Oops”同学独家赞助。...也欢迎更多小伙伴来分享你学习成果 兔哥哥儿种花生 问题描述 兔哥哥儿在自己后花园里种了一些花生,也快到了收获时候了。这片花生地是一个长度为L、宽度为W矩形,每个单位面积上花生产量都是独立。...他想知道,对于某个指定区域大小,在这么大矩形区域内,花生产量最大会是多少。 Input Format 第1行有2个整数,长度L和宽度W。...第2行至第L+1行,每行有W个整数,分别表示对应单位面积上花生产量A( 0≤A<10 )。 第L+2行有2个整数,分别是指定区域大小长度a和宽度b。...: 1≤L,W≤100; 对于100%数据:1≤L,W≤1000。

    35030

    Oops周末一题(兔哥哥儿摘苹果)

    这里非常感谢“Oops”学弟,特别说明本部分是小白学弟“Oops”同学独家赞助。...也欢迎更多小伙伴来分享你学习成果 兔哥哥儿摘苹果 题目描述 兔哥哥儿平日喜欢自己种一些东西,并以此为写程序和看电影之外最大爱好。...最近,兔哥哥儿种一棵苹果树到了采摘时候,但是由于兔哥哥儿身高限制,有些苹果太高摘不到。于是兔哥哥儿借来了一个凳子,踩在上面可以摘到更多苹果。...第1行有3个整数,分别表示兔哥哥儿身高、凳子高度和苹果个数n(1≤n≤1000)。 第2行有n个整数,分别表示每个苹果高度。...输出描述 输出一个整数m,表示兔哥哥儿最多能摘到苹果个数为m。

    40930

    服务器堡垒机错误码110原因?错误码110如何解决?

    很多使用堡垒机来连接外网企业,在使用过程中都可能会遇到各种各样报错,而错误码110是报错中经常出现代码,很多朋友不知道为什么会出现这样错误码,那么服务器堡垒机错误码110原因是什么?...错误码110如何解决呢? 服务器堡垒机错误码110原因 当服务器堡垒机在连接远程服务器时出现错误码110时,一般来说出现这样错误代码,都是网络连接上出现了问题。...服务器堡垒机错误码110解决 很多朋友在遇到服务器堡垒机登录报错时,往往会不知所措,不知道如何来解决这类问题。...其实对于错误码110报错,用户可以首先尝试联系云端服务供应商,看是否是远程服务器进行测试或者重启,此外也可以联系企业宽带供应商了解是否是服务出现了问题。...此外对企业内部网络设备进行检查确保所有设备都工作正常,是解决错误码110主要方法。

    1.8K20

    Android获取WebView加载url请求错误码 【推荐】

    例如需求,我有一个WebView 加载一个url, 该url对应网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身下拉是无法使用,要求重新加载页面的话就需要在...webview外层套一个android下拉控件(SwipeRefreshLayout) 这样导致下拉一定用SwipeRefreshLayout下拉 最终要求是如果页面加载成功的话,用页面本身下拉,...如果页面加载失败的话,用android下拉控件下拉 ——————————————————————————————————————————————– 解决办法就是监听加载url请求错误码,对SwipeRefreshLayout.setEnabled...获取WebView加载url请求错误码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家。...在此也非常感谢大家对ZaLou.Cn网站支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    1.2K20

    linux设备驱动程序第四部分:从如何定位oops对代码调试方法,驱动线「建议收藏」

    问题,在应用程序中执行这样程序就会报segmentation fault错误,而因为驱动程序特殊性,出现此类情况后往往会直接造成系统宕机。并会抛出oops信息。...那么我们怎样来分析oops信息呢,甚至依据oops信息来定位详细出错代码行呢?以下就依据一个简单实例来说明怎样调试驱动程序。...怎样依据oops定位代码行 我们借用linux设备驱动第二篇:构造和执行模块里面的hello world程序来演示出错情况,含有错误代码hello world例如以下: #include <linux...以上就是通过oops信息来定位驱动崩溃行号。 其它调试手段 以上就是通过oops信息来获取具体导致崩溃代码行,这样情况都是用在遇到比較严重错误导致内核挂掉情况下使用。...介绍完驱动调试方法后。下一篇会介绍下linux驱动并发与竞态,欢迎关注。

    88310

    Spring Boot HTTP over JSON 错误码异常处理

    “年轻人不要怕表现,要敢于出来表现,但还是那句话,要有正确度,你表现是分析问题和解决问题能力。”...3.微服务尤其适用 这时候 HTTP over JSON 形式中很多涉及到返回码,错误码相关处理。比如xxx参数不完整,权限不足,用户不存在等。 怎么统一处理认为是异常场景呢?...这里用于统一拦截异常,然后返回错误码对象体。...@ResponseBody 作用: 该注解用于将 Controller 方法返回对象,通过适当 HttpMessageConverter 转换为指定格式后,写入到 Response 对象 body...b.响应码设计 简单讲讲,这里定义了一个错误码接口,全局错误码枚举和各个业务错误码枚举去实现接口,并用枚举值枚举出错误码错误码消息列表。如图:

    59220
    领券