当前位置: 首页 > news >正文

内核Oops的几种定位方法

反汇编

报错信息

[    1.826455] ------------[ cut here ]------------
[    1.831091] Kernel BUG at c011fef0 [verbose debug info unavailable]
[    1.837344] Internal error: Oops - BUG: 0 [#1] PREEMPT THUMB2
[    1.843108] Modules linked in:
[    1.846158] CPU: 0 PID: 1 Comm: swapper Not tainted 3.10.33 #42
[    1.852075] task: c2058000 ti: c205a000 task.ti: c205a000
[    1.857473] PC is at spifb_probe+0xc/0x34c
[    1.861591] LR is at driver_probe_device+0x75/0x15c
[    1.866440] pc : [<c011fef0>]    lr : [<c013fd45>]    psr: a0000133
[    1.866440] sp : c205bd58  ip : 00000000  fp : c2256b44
[    1.877908] r10: 00000000  r9 : c2256800  r8 : c04caea8
[    1.883124] r7 : 00000000  r6 : c2258600  r5 : 00000000  r4 : c2258600
[    1.889651] r3 : c058f4d8  r2 : 00000000  r1 : c225b8b0  r0 : c2258600
[    1.896178] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment kernel
[    1.903650] Control: 50c53c7d  Table: 00004059  DAC: 00000015
......
[    3.077561] current proc: 1 swapper
[    3.081038] -----------------------------------------------------------------------------------
[    3.089700]       pid     uTime    sTime    exec(ns)    stat   cpu   task_struct
[    3.097111] -----------------------------------------------------------------------------------
[    3.105804]        1        0      168       1826120108 R(0)    0    c2058000 swapper
[    3.113612] [<c00198e9>] (unwind_backtrace+0x1/0x88) from [<c0017e5f>] (show_stack+0xb/0xc)
[    3.121969] [<c0017e5f>] (show_stack+0xb/0xc) from [<c01ed7d5>] (dump_task_info+0xad/0xe8)
[    3.130265] [<c01ed7d5>] (dump_task_info+0xad/0xe8) from [<c0049f39>] (panic_flush+0x101/0x1c8)
[    3.138957] [<c0049f39>] (panic_flush+0x101/0x1c8) from [<c004a223>] (crash_kexec+0xb/0x64)
[    3.147314] [<c004a223>] (crash_kexec+0xb/0x64) from [<c0017feb>] (die+0x18b/0x27c)
[    3.154969] [<c0017feb>] (die+0x18b/0x27c) from [<c0008267>] (do_undefinstr+0x63/0x100)
[    3.162960] [<c0008267>] (do_undefinstr+0x63/0x100) from [<c0008ca1>] (__und_svc_finish+0x1/0x40)
[    3.199835] [<c0008ca1>] (__und_svc_finish+0x1/0x40) from [<c011fef0>] (spifb_probe+0xc/0x34c)
[    3.208466] [<c011fef0>] (spifb_probe+0xc/0x34c) from [<c013fd45>] (driver_probe_device+0x75/0x15c)
[    3.217525] [<c013fd45>] (driver_probe_device+0x75/0x15c) from [<c013ee9f>] (bus_for_each_drv+0x3f/0x4a)
[    3.227010] [<c013ee9f>] (bus_for_each_drv+0x3f/0x4a) from [<c013fca3>] (device_attach+0x3b/0x54)
[    3.235855] [<c013fca3>] (device_attach+0x3b/0x54) from [<c013f6b3>] (bus_probe_device+0x17/0x60)
[    3.244731] [<c013f6b3>] (bus_probe_device+0x17/0x60) from [<c013e8a9>] (device_add+0x2c9/0x374)
[    3.253545] [<c013e8a9>] (device_add+0x2c9/0x374) from [<c016d665>] (spi_add_device+0x95/0xd0)
[    3.262146] [<c016d665>] (spi_add_device+0x95/0xd0) from [<c016e063>] (spi_register_master+0x3cf/0x40c)
[    3.271540] [<c016e063>] (spi_register_master+0x3cf/0x40c) from [<c016f4bd>] (asr_spi_probe+0x2a1/0x440)
[    3.281026] [<c016f4bd>] (asr_spi_probe+0x2a1/0x440) from [<c013fd45>] (driver_probe_device+0x75/0x15c)
[    3.290450] [<c013fd45>] (driver_probe_device+0x75/0x15c) from [<c013fe85>] (__driver_attach+0x35/0x48)
[    3.299844] [<c013fe85>] (__driver_attach+0x35/0x48) from [<c013ee45>] (bus_for_each_dev+0x3b/0x46)
[    3.308872] [<c013ee45>] (bus_for_each_dev+0x3b/0x46) from [<c013f80d>] (bus_add_driver+0x89/0x148)
[    3.317930] [<c013f80d>] (bus_add_driver+0x89/0x148) from [<c01401af>] (driver_register+0x4b/0x98)
[    3.326897] [<c01401af>] (driver_register+0x4b/0x98) from [<c0012bb9>] (do_one_initcall+0x69/0xe8)
[    3.335864] [<c0012bb9>] (do_one_initcall+0x69/0xe8) from [<c047985b>] (kernel_init_freeable+0xab/0x140)
[    3.345350] [<c047985b>] (kernel_init_freeable+0xab/0x140) from [<c000edd3>] (kernel_init+0x7/0xa0)
[    3.354408] [<c000edd3>] (kernel_init+0x7/0xa0) from [<c000913d>] (ret_from_fork+0x11/0x34)
[    3.362735]       53        0        0       1826120108 R(0)    0    c222e900 kworker/u2:1
[    3.371000] -----------------------------------------------------------------------------------

gdb定位

./owtoolchain/linux64/bin/arm-openwrt-linux-uclibcgnueabi-gdb ./marvell/linux/vmlinux.o
disassemble /m spifb_probe867     static int spifb_probe (struct spi_device *spi)
868     {0x0012e374 <+0>:     stmdb   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}0x0012e378 <+4>:     mov     r6, r0869             struct device_node *np = spi->dev.of_node;
870             struct fb_info *info;
871             struct spifb_par *par;
872             int retval = -ENOMEM;0x0012e45a <+230>:   mvn.w   r7, #110x0012e5d0 <+604>:   mvn.w   r0, #110x0012e5d4 <+608>:   b.n     0x12e622 <spifb_probe+686>873             struct pinctrl *pinctrl;
874             BUG_ON(np != NULL);0x0012e37a <+6>:     ldr.w   r3, [r0, #324]  ; 0x1440x0012e37e <+10>:    cbz     r3, 0x12e382 <spifb_probe+14>0x0012e380 <+12>:    stmiami r9!, {r1, r9, r10, r11, r12, lr, pc}875             pr_err("enter spifb_probe.\n");

addr2line

报错信息

[KR] Oops at 0xc0laf9fa in kworker/u2:2

addr2line定位

./owtoolchain/linux64/bin/arm-openwrt-linux-uclibcgnueabi-addr2line -C -f -e ./marvell/linux/arch/arm/boot/compressed/vmlinux 0xc0laf9fa
restart
/openwrt/marvell/linux/arch/arm/boot/compressed/head.S:207

函数基地址+偏移

报错信息

PC is at pl031_probe+0x120/0x1e8

addr2line定位

前置条件,内核打开CONFIG_DEBUG_INFO选项,保存
1)根据System.map找到函数基地址,示例中,pl031_probe基地址c0363878 t pl031_probe。
2)需要查询的地址为基地址+偏移地址。示例中崩溃代码虚拟地址为0xc0363878 + 0x120 = 0xc0363998
./owtoolchain/linux64/bin/arm-openwrt-linux-uclibcgnueabi-addr2line -C -f -e ./marvell/linux/arch/arm/boot/compressed/vmlinux 0xc0363998

相关文章:

内核Oops的几种定位方法

反汇编 报错信息 [ 1.826455] ------------[ cut here ]------------ [ 1.831091] Kernel BUG at c011fef0 [verbose debug info unavailable] [ 1.837344] Internal error: Oops - BUG: 0 [#1] PREEMPT THUMB2 [ 1.843108] Modules linked in: [ 1.846158] C…...

外包干了10个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...

2024美赛C完整思路

首先&#xff0c;题目明确表示可以自行选择额外的玩家信息或其他数据。因此最好找一些其他选手的数据以扩大数据集&#xff0c;与其他选题人作出数据集上的区分。大数据集可以帮助后续的建模实验更准确。 第一问本质就是开发一个评价模型&#xff0c;主要针对运动员得分的时刻…...

Backtrader 文档学习- Broker - Cheat-On-Open

Backtrader 文档学习- Broker - Cheat-On-Open 1.概述 V1.9.44.116增加了Cheat On Open的支持。对于全押的人来说&#xff0c;这似乎是一个必需的功能&#xff0c;用bar的收盘价后进行计算&#xff0c;希望与开盘价相匹配。 当开盘价差距&#xff08;上涨或下跌&#xff0c;取…...

基于微信浙江杭州某停车场车位预约小程序系统设计与实现 研究背景和意义、国内外现状

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

编程流程图

对于复杂流程&#xff0c;我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下&#xff1a; processOn&#xff1a; 这个是我之前 一直的选择&#xff0c;他可以画上面的这些&#xff0c;流程图&#xff0c;网页操作&#xff0c;但是他不是免费的&#xff0c;查过…...

2024年1月29日-2月4日(全面进行+收集虚幻商城免费资源)

从上周发现&#xff0c;一轮轮推就行&#xff0c;每轮多个时间片&#xff0c;每个时间片一门。周一到周五一轮&#xff0c;周六日多轮&#xff08;比如上下午各一轮&#xff09;。 周一&#xff1a; 7&#xff1a;09–9&#xff1a;20卫星导航定位&#xff08;p3&#xff09;&a…...

【python接口自动化】- 正则用例参数化

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…...

Java中的四种线程池详解及使用场景

前言 在Java并发编程中&#xff0c;JDK提供了一套强大的线程池工具类java.util.concurrent.ThreadPoolExecutor以及它的四个便捷工厂方法&#xff0c;这四种线程池分别对应不同的使用场景和特性。下面将详细介绍每种线程池的创建方式、工作原理以及适用场景。 1. CachedThrea…...

Google Chrome 常用的几个参数

1 右键--Google Chrome--属性--目标 参数作用--disable-infobars此计算机将不会再收到 Google Chrome 更新&#xff0c;因为 Windows XP 和 Windows Vista 不再受支持。适用于 xp、2003 的 49.x.x.x 版本。示例1--ingore-certificate-errors忽略证书错误--disable-background-…...

Keil软件某些汉字输出乱码,0xFD问题,51单片机

1. 问题 keil软件输入某些汉字的时候会输出乱码&#xff0c;例如&#xff1a;升、 数 2. 原因 keil软件会忽略0xFD。 升的GB2312编码为 0xc9fd&#xff0c;keil解析为0xc9数的GB2312编码为 0xcafd&#xff0c;keil解析为0xca 关于Keil软件中0xFD问题的说明 3. 解决方案1 …...

自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人

如今&#xff0c;大模型层出不穷&#xff0c;这为自然语言处理、计算机视觉、语音识别和其他领域的人工智能任务带来了重大的突破和进展。大模型通常指那些参数量庞大、层数深、拥有巨大的计算能力和数据训练集的模型。 但不能不承认的是&#xff0c;普通人使用大模型还是有一…...

Android中 Gradle与 AGP 版本对应关系表

Android Gradle Plugin Version版本Gradle Version版本1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2.132.0.0 - 2.1.22.10 - 2.132.1.3 - 2.2.32.14.12.3.03.33.0.04.13.1.04.43.2.0 - 3.2.14.63.3.0 - 3.3.34.10.13.4.0 - 3.4.35.1.13.5.0 - 3.5.45.4.13.…...

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识&#xff0c;同学们也可以通过公众号菜单栏查看&#xff01; 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…...

跟着pink老师前端入门教程-day13

品优购案例 一、品优购项目规划 1. 品优购项目整体介绍 项目名称&#xff1a;品优购 项目描述&#xff1a;品优购是一个电商网站&#xff0c;我们要完成 PC 端首页、列表页、注册页面的制作 2. 品优购项目学习目的 1. 电商类网站比较综合&#xff0c;里面需要大量的布…...

go语言基础之泛型

1.泛型 泛型是一种独立于所使用的特定类型的编写代码的方法。使用泛型可以编写出适用于一组类型中的任何一种的函数和类型。 1.1 为什么需要泛型 func reverse(s []int) []int {l : len(s)r : make([]int, l)for i, e : range s {r[l-i-1] e}return r }fmt.Println(reverse…...

Vue.js 中子组件向父组件传值的方法

Vue.js 是一款流行的 JavaScript 前端框架&#xff0c;它提供了一套完整的工具和 API&#xff0c;使得开发者可以更加高效地构建交互式的 Web 应用程序。其中&#xff0c;组件化是 Vue.js 的一个核心概念&#xff0c;通过组件化可以将一个复杂的应用程序拆分成多个独立的部分&a…...

数据可视化 pycharts实现地理数据可视化(全球地图)

自用版 紧急整理一点可能要用的可视化代码&#xff0c;略粗糙 以后有机会再改 requirements&#xff1a; python3.6及以上pycharts1.9 数据格式为&#xff1a; 运行结果为&#xff1a; import pandas as pd from pyecharts.charts import Map, Timeline from pyecharts im…...

Mac下查看、配置和使用环境变量

Mac下查看、配置和使用环境变量 一&#xff1a;Mac怎么查看环境变量命令 printenv一&#xff1a;这个命令会一次性列出所有环境变量的键值对&#xff0c;输出格式为&#xff1a; VAR1value1 VAR2value2 ...二&#xff1a; 也可以通过给这个命令加上环境变量名参数&#xff0…...

虚拟机克隆的三种方式:全量克隆、快速全量克隆、链接克隆

虚拟机克隆的三种方式:全量克隆、快速全量克隆、链接克隆 快速全量克隆 特点&#xff1a;虚拟机启动快、拍平后数据独立 场景&#xff1a;快速发放独立的虚拟机&#xff0c;减少等待虚拟机部署完成时间&#xff0c;能够快速提供用户使用虚拟机。 实现方式&#xff1a;通过对…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...