1. 程式人生 > >Linux核心的Oops問題詳解

Linux核心的Oops問題詳解

參考:Linux:  How To Locate An Oops

什麼是Oops?從語言學的角度說,Oops應該是一個擬聲詞。當出了點小事故,或者做了比較尷尬的事之後,你可以說"Oops",翻譯成中國話就叫做“哎呦”。“哎呦,對不起,對不起,我真不是故意打碎您的杯子的”。看,Oops就是這個意思。

在Linux核心開發中的Oops是什麼呢?其實,它和上面的解釋也沒什麼本質的差別,只不過說話的主角變成了Linux。當某些比較致命的問題出現時,我們的Linux核心也會抱歉的對我們說:“哎呦(Oops),對不起,我把事情搞砸了”。Linux核心在發生kernel panic時會打印出Oops資訊,把目前的暫存器狀態、堆疊內容、以及完整的Call trace都show給我們看,這樣就可以幫助我們定位錯誤。

下面,我們來看一個例項。為了突出本文的主角--Oops,這個例子唯一的作用就是造一個空指標引用錯誤。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <linux/kernel.h> #include <linux/module.h> staticint __init hello_init(void
) { int*p = 0; *p = 1; return0; } staticvoid __exit hello_exit(void) {

相關推薦

linux核心sysfs-1

sysfs 是 Linux 核心中設計較新的一種虛擬的基於記憶體的檔案系統,它的作用與 proc 有些類似,但除了與 proc 相同的具有檢視和設定核心引數功能之外,還有為 Linux 統一裝置模型作為管理之用。相比於 proc 檔案系統,使用 sysfs 匯出核心資料的方

Linux核心程序之三:flush-x:y

上一篇文章《裝置檔案與裝置號》當然不是突然穿插而來的自言自語,而是理解本文的前提,下面來看。是一類程序,這在系列的上一篇文章裡已經講到過,系統的絕大部分的bdi裝置都會有對應的flush-x:y核心程序,而這個x:y是對應bdi裝置的裝置號。 先看一下系統當前掛載的檔案系統

Linux核心編譯

學習了網上的一些資料,自己試著摸索了一下,整理出此文。 由於在下水平相當有限,不當之處,還望大家批評指正^_^ 重要的參考資料有: 好了,下面進入正題。 一、準備工作 準備工作如何做,這裡就不詳說了。 a) 首先,你要有一臺PC(這不廢話麼^_^),裝好了Lin

Linux核心引數

核心引數詳解 長期更新 SYN_RECV 服務端收到sys,還未發出syn+ack 1.net.ipv4.tcp_synack_retries 預設值5,linux對應1+2+4+..32=2^6-1=63s 2.net.ipv4.tcp_s

Linux核心程序之一:sync_supers

先說下環境,CentOS 6.0/Linux kernel 2.6.38.8/X86-64,後面提到的程式碼也都來之kernel 2.6.38.8。這個環節下的程序列表具體如下所示,後續將有一系列的文章分析各個程序(主要是核心程序)的功能: [[email pro

Linux核心調整和核心引數

SYN COOKIE原理和Linux核心中的實現 http://www.ibm.com/developerworks/cn/linux/l-syncookie/?ca=dwcn-newsletter-linux Linux系統下的DDOS攻擊防範 http://hi.baidu.com/mo

linux核心優化,核心引數

轉自百度文庫,最後有一部分修改: 一、前言 本文件針對OOP8生產環境,具體優化策略需要根據實際情況進行調整;本文件將在以下幾個方面來闡述如何針對RedHat Enterprise Linux進行效能優化。 1)       Linux Proc檔案系統,通過對Proc檔案

Linux系統呼叫(如何從使用者空間進入核心空間)

系統呼叫概述         計算機系統的各種硬體資源是有限的,在現代多工作業系統上同時執行的多個程序都需要訪問這些資源,為了更好的管理這些資源程序是不允許直接操作的,所有對這些資源的訪問都必須有作業系統控制。也就是說作業系統是使用這些資源的唯一入口,而這個入口就是作業系

linux核心剖析---Linux系統呼叫(實現機制分析)

本文介紹了系統呼叫的一些實現細節。首先分析了系統呼叫的意義,它們與庫函式和應用程式介面(API)有怎樣的關係。然後,我們考察了Linux核心如何實現系統呼叫,以及執行系統呼叫的連鎖反應:陷入核心,傳遞系統呼叫號和引數,執行正確的系統呼叫函式,並把返回值帶回使用者空間。最後

Linux啟動流程

linux 詳解 啟動流程 grub mbr 內核 linux啟動流程第一部分 Linux啟動基礎知識1.1 linux centos6.8啟動流程圖 BIOS加電自檢à加載MBRà加載啟動grubà加載內核à啟動/sbin/i

Linux netstat命令,高級面試必備

bytes tool head osi ngs 進行 pen 通信 詳細信息 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Mem

linux top 命令

ctrl+ 一次 所有 使用方法 ase 隱藏 統計 ini 前臺 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user

【轉】linux awk命令

column 環境變量 最後一行 工作流程 初始 文本文件 for循環 其中 cti 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切

Linux ls命令

-c 目錄 輸出 限制 普通 排序 當前 ls -l sna ls 命令可以說是Linux下最常用的命令之一。 -a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。(後有詳解)-b 把文件名中不可輸出的字符用反斜杠加字符編號(就象在c語言裏一樣)的形式列出。-c 輸出

linux lsof命令

open 日誌 文件和目錄 delete 數據報 正在 某個文件 alt targe 簡介 lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件

linux tail 命令

基本 linux中 file tail命令 方式 sed 缺省 顯示 有效 linux ---tail命令 linux中tail命令---用於查看文件內容 最基本的是cat、more和less。 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /

linux 線程

大於 linux下 blog 根據 影響 stack 復制代碼 系統資源 代碼 線程 是計算機中獨立運行的最小單位,運行時占用很少的系統資源。可以把線程看成是操作系統分配CPU時間的基本單元。一個進程可以擁有一個至多個線程。它線程在進程內部共享地址空間、打開的文件描述符等資

linux screen 命令

文本 常用 小時 遠程終端 參考 編輯 load 調整 長時間 一、背景 系統管理員經常需要SSH 或者telent 遠程登錄到Linux 服務器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠程終端窗口

linux服務ssh

ssh服務ssh服務: 管理服務器的方式: 本地管理 (安裝系統、故障修復) SSH遠程連接的方式 Linux: ssh命令 Windows: Xshell; Xmanager SecureCRT Putty 提供ssh服務/ssh客戶端工具的軟件:[[email 

linux系統啟動

oca 3.3 哪些 技術 針對 個性 桌面 inux 解壓縮 要學習linux的命令,我們需要先了解linux系統是如何工作的,這裏我們先了解linux是如何在一臺電腦上啟動加載的!! linux系統啟動過程 第一步、 BIOS初始化 1. BIOS檢測所有的外置