首页 > 其他分享 >Oops信息和栈回溯——概念篇

Oops信息和栈回溯——概念篇

时间:2023-11-28 11:12:50浏览次数:22  
标签:错误 信息 概念 出错 Oops 回溯 内核

一. Oops信息来源及格式

  Oops这个单词含义为“惊讶”,当内核出错时(比如访问非法地址)打印出来的信息被称为Oops信息。Oops信息包含以下几部分内容:

1. 文本描述信息。

比如类似“Unable to handle kernel NULL pointer dereference at virtual address 00000000"的信息,他说明了发生的是哪类错误。

 

2. Oops信息的序号。

Internal error: Oops: 806 [#1]

 

3. 内核中加载的模块名称,也可能没有,以下面字样开头。

Modules linked in:

 

4. 发生错误的CPU的序号,对于单处理器系统,序号为0,如:

CPU: 0 Not tainted (2.6.22.6 #36)

 

5. 发生错误时CPU的各个寄存器值。

 

6. 当前进程的名字及进程ID,比如:

Process swapper (pid: 1, stack limit = 0xc0480258)

这并不是说发生错误的是这个进程,而是表示发生错误时,当前进程是它。错误可能发生在内核代码、驱动程序,也可能就是这个进程的错误。

 

7. 栈信息。

8. 栈回溯信息,可以从中看出函数调用关系,形式如下:

[<c0018f78>](s3c2410fb_probe+0xc/0x18) from [<c01d3f88>] (platform_drv_probe+0x18/0x1c)

 

9. 出错指令附近的指令机器码,比如(出错指令在小括号内):

Code: eafffe97 e3a02000 e59f3008 e1a01002 (e5823000)

 

二.配置内核使Oops信息的栈回溯信息

  linux 2.26.32自身具备的调试功能,可以使打印出的Oops信息更直观。通过Oops信息中PC寄存器的值可以知道出错指令的地址,通过栈回溯信息可以知道出错时的函数调用关系,根据这两点可以很快定位错误。要让内核出错时能够打印栈回溯信息,编译内核时要增加“-fno-omit-frame-pointer"选项,这可以通过配置CONFIG_FRAME_POINTER来实现。查看内核目录下的配置文件.config,确保CONFIG_FRAME_POINTER已经被定义,如果没有,执行“make menuconfig”命令重新配置内核。CONFIG_FRAME_POINTER有可能被其他配置项目自动选上。

标签:错误,信息,概念,出错,Oops,回溯,内核
From: https://www.cnblogs.com/adam-ma/p/17861430.html

相关文章

  • 初等数论中的基础概念
    整除设有整数a,b且a 不等于0。如果存在整数q,使得b=aq,那么就说b 可被a 整除,记作a∣b,b 不被a 整除记作a∤b。比如3∣9的意思是3能整除9 ,而3∤10是3不能整除10。......
  • R语言和Python对copula模型Gaussian、t、Clayton 和 Gumbel 族可视化理论概念和文献计
    原文链接:http://tecdat.cn/?p=27240 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于copula的研究报告,包括一些图形和统计输出。本文包含一些直观的示例来说明copula理论的核心概念。以下是脚本及其各自用途的简短列表:首先演示如何使用高斯copula来模拟具有任意......
  • oops
     如果你检查你的Linux系统上运行的进程,你可能会对一个叫做“kerneloops”的进程感到好奇。提示一下,它是“kerneloops”,而不是“kerneloops”。坦率地说,“oops”是Linux内核的一部分出现了偏差行为。你有做错了什么吗?可能没有。但有一些不对劲。而那个做了错事的进程......
  • OSS Scan,Mend,BlackDuck,FOSS,ECCN 的概念
    1.OSSScanOSSScan是一个用于扫描开源软件(OpenSourceSoftware,简称OSS)的工具。它的主要目的是找出软件中可能存在的安全问题,包括但不限于漏洞、许可证冲突、违反的法规等。一个OSSScan的例子是OWASP的Dependency-Check工具,它能够检测项目中使用的开源库是否存在已知......
  • SQL 注入的基本概念介绍和预防
    SQL注入是一种常见的网络攻击手段,通过利用程序的安全漏洞,向服务器提交恶意的SQL查询代码,从而实现攻击者读取数据、修改数据、执行管理员操作等目的。SQL注入的原理是,当应用程序在处理用户输入的数据时,如果没有进行有效的安全防护,用户输入的数据可能会被直接拼接到SQL查询语......
  • Angular 依赖注入领域里 optional constructor parameters 的概念介绍
    Angular依赖注入(DI)是一个强大且灵活的设计模式,它可以帮助我们更好地管理和组织我们的代码。构造函数参数的可选性(Optional)是AngularDI系统的一个重要特性。这种特性允许我们将某些服务或值作为可选依赖注入到组件或服务中,这样,如果这些服务或值不存在,我们的代码仍然可以正常工......
  • Linux文件管理:理解基本概念与常用命令
    1.文件系统基础1.1树状文件结构Linux文件系统采用树状结构,以根目录(/)为起点,所有文件和目录都位于其下。理解这个层次结构是理解Linux文件管理的关键。1.2文件与目录在Linux中,一切皆文件。文件可以是文本文件、二进制可执行文件、目录等。目录用于组织文件,使其更有层次感。2......
  • Java算法练习—递归/回溯
    递归是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。因此递归过程,最重要的就是查看能不能将原本的问题分解为更小的子问题,这是使用递归的关键。如果是线型递归,子问题直接回到父问题......
  • 3.1 指令级并行:概念与挑战
    3.1指令级并行:概念与挑战指令集并行ILP的定义处理器使用流水线来重叠指令的执行并提高性能,指令之间的这种潜在重叠被称为指令级并行,因为指令可以并行计算。利用ILP有两种主流方法1.依靠硬件来帮助动态地发现和利用并行性的方法(桌面端CPU常用,例如酷睿系列);2.依靠软件技术在编......
  • Java登陆第十二天——网络编程(一)网络的概念
    网络由两台或者更多的计算机组成的网络,称之为计算机网络。在同一个网络中,不同的计算机可以互相通信。因为他们使用的都是相同的协议。(通信:两台设备之间通过网络实现数据传输。)假设某处的一个计算机网络使用的网络协议为ABC。那么另一处网络协议为EFG的计算机网络,就无法与该A......