| 書名: | Linux核心除錯實務 (1版) | |||
| 作者: | Kaiwan N Billimoria | |||
| 譯者: | 廖明沂 | |||
| 版次: | 1 | |||
| ISBN: | 9786263248465 | |||
| 出版社: | 碁峰資訊 | |||
| 出版日期: | 2024/07 | |||
| 書籍開數、尺寸: | 18開 | |||
| 頁數: | 650 | |||
|
#資訊
|
||||
【簡介】 藉由實用工具與進階技術,對Linux kernel與kernel模組進行有效除錯! Linux kernel是世界公認最好的作業系統核心。但是要對kernel進行除錯,則是一件相當複雜的工作。本書是學習一切高階kernel除錯的全面性指南。深入涵蓋許多領域,例如基於工具的除錯(debug)技術(printk與動態除錯框架),並展示如何使用Kprobes。涉及記憶體的bug往往是一場惡夢,我們用兩個章節的篇幅來講解針對記憶體除錯的工具與技術。當kernel賞你一個Oops時,該如何準確地解讀才能解開最根本的問題呢?這本書提供了解答。 並行性(concurrency)往往是一個複雜的主題,本書能幫助你確切地了解何謂資料競爭(data race),包括使用KCSAN來檢測這類問題。還有一些棘手的問題,無論是在除錯還是效能方面,都需要詳細的kernel層級追蹤;你將學習到如何使用Ftrace及其前端(frontend)的強大功能,還將會知道如何在kernel內部的GDB工具(KGDB)與許多其他工具,用於處理kernel lockup、hangs與可怕的kernel panic。 讀完本書,你將能掌握各種強大的kernel debug工具與技術,以及具有在何時間點使用適當工具和技術的敏銳能力。 你將學到的內容: *探索基於工具的printk,以及功能強大的動態除錯框架(dynamic debug framework) *使用靜態與動態的Kprobes,trap kernel/module 的函式 *使用KASAN、UBSAN、SLUB debug 和kmemleak捕捉kernel 的記憶體問題 *深入解譯Oops,並精準識別程式碼的行號位置 *了解資料競爭,並使用KCSAN捕捉難以捉摸的並行性(concurrency)問題 *利用Ftrace與trace-cmd詳細追蹤kernel流程 *撰寫自訂的kernel panic handler(處理常式),並檢測kernel lockup與hangs *使用 KGDB 單步執行,以及 debug kernel/module 的原始碼 中文版勘誤資料:http://lkd.netdpi.net/errata 【目錄】 【PART 1 Kernel 除錯的簡介與方法】 chapter 1 軟體除錯概論 1.1 技術需求 1.2 軟體除錯 - 定義、起源與由來 1.3 軟體錯誤:真實案例 1.4 設定工作區 1.5 兩個 kernel 的故事 1.6 幾個簡單的 Debug 技巧提示 結論 chapter 2 Debug Kernel 的方法 2.1 技術需求 2.2 分類 bug type 2.3 Debug Kernel:方法不同的原因 2.4 概述 debug kernel 的不同方法 結論 【PART 2 Kernel 與驅動程式的除錯工具與技術】 chapter 3 透過檢測除錯:使用 printk 與其族類 3.1 技術需求 3.2 無所不在的 kernel printk 3.3 將 printk 用於除錯目的 3.4 使用 kernel 強大的動態 debug 功能 3.5 剩下的 printk 雜項字元 結論 chapter 4 透過Kprobes 儀器進行debug 4.1 了解 kprobes 基礎 4.2 使用 static kprobes - 傳統的探測方法 4.3 了解 ABI 的基本概念 4.4 使用 static kprobes - 範例 3 與範例 4 4.5 開始使用 kretprobes 4.6 Kprobes:限制性與不利因素 4.7 更簡單的方法:動態 kprobes 或基於 kprobes 的事件追蹤 4.8 透過 perf 和 eBPF 工具,對 execve() API 進行 trap 結論 chapter 5 Kernel 記憶體除錯問題初探 5.1 技術需求 5.2 記憶體到底出了什麼問題? 5.3 使用 KASAN 和 UBSAN 找到記憶體 bug 5.4 使用 Clang 編譯 kernel 和 module 5.5 捕捉 kernel 中的記憶體缺陷:比較與注意事項 (Part 1) 結論 chapter 6 再論 Kernel 記憶體除錯問題 6.1 技術需求 6.2 透過 SLUB debug 偵測 slab 記憶體損毀 6.3 使用 kmemleak 找出記憶體洩漏問題 6.4 捕捉 kernel 中的記憶體缺陷:比較與注意事項(Part 2) 結論 chapter 7 Oops!解讀 kernel 的 bug 診斷 7.1 技術需求 7.2 產生一個簡單的 kernel bug 和 Oops 7.3 介紹 Kernel Oops 以及所代表的意義 7.4 魔鬼藏在細節裡:解碼 Oops 7.5 協助判斷 Oops 位置的工具與技術 7.6 ARM Linux 系統上的 Oops 及使用 Netconsole 7.7 幾個實際的 Oops 結論 chapter 8 鎖的除錯 8.1 技術需求 8.2 上鎖與 debug 因鎖產生的 bug 8.3 上鎖:快速總結要點 8.4 使用 KCSAN 攔截 concurrency bug 8.5 一些實際案例:由於上鎖問題導致的 kernel bug 結論 【PART 3 額外的 Kernel 除錯工具與技術】 chapter 9 追蹤 Kernel 流程 9.1 技術需求 9.2 Kernel 追蹤技術:概論 9.3 使用 ftrace kernel 追蹤程式 9.4 使用 trace-cmd、KernelShark 與 perf-tools ftrace 前端工具 9.5 用 LTTng 和 Trace Compass 追蹤 kernel 的簡介 結論 chapter 10 Kernel Panic、Lockup 以及 Hang 10.1 技術需求 10.2 Panic!Kernel panic 時會發生什麼事? 10.3 撰寫自訂的 kernel panic 處理常式 10.4 偵測 kernel 中的 lockup 和 CPU 停止 10.5 採用 kernel 的掛起任務和工作佇列停止偵測器 結論 chapter 11 使用 Kernel GDB (KGDB) 11.1 技術需求 11.2 從概念上理解 KGDB 的運作 11.3 為 KGDB 建立 ARM target 系統和 kernel 11.4 使用 KGDB debug kernel 11.5 使用 KGDB debug kernel 模組 11.6 [K]GDB:一些提示和技巧 結論 chapter 12 再談談一些 kernel debug 方法 12.1 Kdump/crash 架構簡介 12.2 淺談 kernel 程式碼的靜態分析 12.3 Kernel code coverage 工具和測試框架簡介 12.4 其他:使用 journalctl、斷言 (assertions) 和警告 結論 索引
還沒有人留下心得,快來搶頭香!
為您推薦
類似書籍推薦給您
【簡介】 📌 全彩印刷、圖解詳盡,快速學會關鍵知識 📌 將Go與Python程式的實驗與結果視覺化 透過實作與豐富的精緻圖解,對OS與硬體相關的工作原理是如何運作,進行淺顯易懂的解說,讓您對OS的運作,有更加具體而清晰的了解。 不論是新手還是老手,都很容易陷入「OS是個充滿神秘與困難的東西」的困境。為了要改善這個狀況,本書不會探討艱深的理論,而是以Linux為中心,在進入實作階段前就對Linux的工作原理進行解說,讀者只需要對Linux基本的命令有所瞭解便可輕鬆閱讀。 本書可以幫助你: .當OS或硬體相關故障產生時,能夠冷靜處理 .開發出有考慮到硬體特性的優良軟體 .瞭解該依據什麼樣的指標來設計系統 【目錄】 第1章 Linux概要 程式與行程 核心 系統呼叫 函式庫 第2章 行程管理-基礎篇 行程的建立 行程的父子關係 行程的狀態 行程的結束 殭屍行程(zombie processes)與孤兒行程(orphan process) 訊號 實現shell的工作管理 常駐程式 第3章 行程排程器 使用單一邏輯CPU 的情形 使用複數邏輯CPU 的情形 user+sys 比real 還要大的案例 時間片 上下文交換 關於效能 程式平行執行的重要性 第4章 記憶體管理系統 記憶體相關資訊的取得 記憶體的回收處理 虛擬記憶體 分配給行程的新記憶體區域 分頁表的階層化 第5章 行程管理-應用篇 行程建立處理的高速化 行程間通訊 互斥控制(mutual exclusion) 互斥控制的原地打轉 多行程與多執行緒 第6章 裝置存取 裝置檔 裝置驅動程式 裝置檔名是可變的 第7章 檔案系統 檔案的存取方法 記憶體對映檔案 一般檔案系統 容量制限(配額) 維持檔案系統的完整性 Btrfs 所提供的檔案系統高階功能 資料損毀的偵測/修復 其他的檔案系統 第8章 記憶階層 快取記憶體 Simultaneous Multi Threading(SMT) 分頁快取 緩衝快取 寫入的時機 direct I/O 置換(swap) 統計數據 第9章 區塊層 HDD的特徵 區塊層的基本功能 區塊裝置的效能指標與測量方法 區塊層對HDD 效能所帶來的影響 區塊層對NVMe SSD 的效能所帶來的影響 第10章 虛擬化功能 什麼是虛擬化功能 虛擬化軟體 支援虛擬化的CPU功能 主機作業系統是怎麼看待虛擬機器 虛擬化環境的行程排程 虛擬機器與記憶體管理 虛擬機器與儲存裝置 第11章 容器 與虛擬機器之間的差異 容器的種類 namespace 安全風險 第12章 cgroup cgroup可控制的資源 使用案例:CPU使用時間的控制 應用案例 終章 本書所學到的內容與今後的應用方式
類似書籍推薦給您
Raspberry Pi 樹莓派:12 道開胃菜打造 Linux 核心肌群(iT邦幫忙鐵人賽系列書) 系列名:單行本 ISBN13:9789864349173 出版社:博碩文化 作者:林有容 裝訂/頁數:平裝/384頁 規格:23cm*17cm*1.8cm (高/寬/厚) 出版日:2021/11/04 中國圖書分類:系統程式設計與程式 內容簡介 「Ok,你買了幾本 Linux 驅動程式的書,然後呢?」 在學習一個新技術時,往往會期待先從一些簡單的例子出發,再逐漸延伸。 不過,如果這個新技術跟 Linux 核心相關,「一些簡單的例子」可能沒那麼簡單。 如果直接從核心改起,從一些作業系統課常見的名詞出發:行程管理、同步機制、記憶體等,往往會因為更動帶來的影響遍佈整個作業系統,而不知該如何下手。而如果從裝置驅動程式開始,個人電腦的硬體往往缺乏彈性,嵌入式系統則需要另外準備軟、硬體實驗環境、交叉編譯工具鏈等等,也很有可能需要另外使用 QEMU 之類的模擬器除錯。 要開始寫程式,才能驗證所學。但似乎很難找到簡單實驗環境與例子,那該怎麼辦呢? 別擔心!這本書就是來回答這個問題! 本書內容改編自第12屆iT邦幫忙鐵人賽IoT組冠軍系列文章──《Modern Maker : 從那些 Maker 的大小事看 Linux 核心》。本書旨在替理解 Linux 內部提供一個略為不同的切入點,使用創客手邊的 Raspberry Pi 與 Arduino,搭配最普遍使用的 Ubuntu,作為實驗 Linux 核心功能的環境。除此之外,本書援引近五年來的諸多研討會作為第一手材料。手上拿著這本書的你,不用買更多材料,今天回家就可以立刻實驗! 本書內容 Chapter 1:Ftrace 與 eBPF ,介紹 Linux 中的兩個動態追蹤機制:由「即時」分支來的 ftrace ,與近幾年討論度極高的 eBPF。這些工具使得讀者僅使用命令列,就能觀察 Linux 內部的運作。這樣做也容易有「外溢」的效果:如果你在追蹤結果中一直看到某些東西重複出現,自然會好奇這是什麼。於是你就有了一個學新東西的好情境。 Chapter 2:裝置樹與 Linux 裝置框架,介紹裝置樹與 Linux 裝置模型。一方面是更貼近 Maker 的經驗:Maker 們可能常 常在一些感測器、ADC、觸控螢幕的硬體供應商提供說明中,看到疊加裝置樹的指示。介紹裝置樹對於 Maker 來說,可以更深入理解這件事的目的,是非常有幫助的知識。另一方面,核心模組也可以因為結合裝置模型,許多函式可以使用自動資源管理的版本,也有助於讓程式更精簡。 Chapter 3:GPIO ,介紹如何在核心中使用 GPIO 。有了 GPIO 之後,就能在 Chapter 4:IRQ 中使用 GPIO 觸發各種 IRQ,搭配 Chapter 1 的動態追蹤工具,讓讀者可以親自實驗中斷上半部與下半部機制的執行機制、執行前後文、發生時機等等。本書涵蓋的下半部機制包含了 workqueue、softirq、tasklet 與 threaded IRQ。在理解 IRQ 之後,相信讀者在閱讀核心文件時,碰到如「該函式無法在不能休眠的情境使用」之類的敘述時,就不會容易感到困惑。 Chatper 5:I2C ,在介紹核心與使用者空間的 I2C 相關功能之後,Chatper 6:與使用者交換資料中,介紹了字元驅動程式,並且把前述的 I2C 的傳輸包裝成字元驅動程式。 最後則是介紹了專為感測器設計的 IIO 子系統。多數的 ADC、加速規、距離感測器等,有不少可以在 IIO 子系統中找到驅動程式。 本書使用的硬體 這本書使用 Raspberry 4B 與 Arduino Uno。當然,還需要幾條杜邦線。除此之外,為了不讓使用 3.3V 邏輯電壓的 Raspberry Pi 4B 被使用 5V 邏輯電壓的 Arduino Uno 破壞,部分實驗需要使用到邏輯準位轉換器(logic level shifter)。以及在最後的 IIO 實驗中,還需要一個 TCRT5000 紅外線距離感測器,但實際上也可以 Arduino Uno 替代。除此之外,你不需要更多硬體了。 Ok,準備好了,我們就直接開始吧! 目錄 前言 CHAPTER 1 - Ftrace 與 eBPF 前言 實驗一:使用 Ftrace 追蹤核心內部 實驗二:使用 bpftrace 追蹤 CHAPTER 2 - 裝置樹與 Linux 裝置框架 前言 實驗三:核心的規格書小抄— 裝置樹 實驗四:Linux Driver Model (LDM) CHAPTER 3 - GPIO 前言 實驗五:在裝置樹中描述 GPIO 實驗六:在核心模組中使用 GPIO CHAPTER 4 - IRQ 實驗七:Hard IRQ 與 Soft IRQ 實驗八:以 GPIO 觸發 IRQ 實驗九:Threaded IRQ CHAPTER 5 - I2C 實驗十:I2C — 由 User 到 Kernel CHAPTER 6 - 與使用者交換資料 實驗十一:以字元驅動程式包裝 I2C 傳輸 實驗十二:IIO 子系統簡介 附錄 - 環境與開發工具安裝 附錄一:在樹莓派安裝 Ubuntu 20.04 附錄二:使用 cscope 與 ctags 搜尋原始程式碼
類似書籍推薦給您
書名:圖解LINUX核心工作原理|透過實作與圖解學習OS與硬體的基礎知識 出版社:碁峰 出版年月:201812 條碼:9789864769964 內容簡介 本書可以幫助您更進一步了解作業系統與硬體的基礎知識 Linux如今廣泛地應用於伺服器、雲端服務、智慧型手機、物聯網裝置。本書可以幫助您具體地了解Linux核心的工作原理,包括行程管理、記憶體管理、檔案系統、儲存裝置,透過實作與圖表的解析,可以幫助您對OS的運作,有更加具體而清晰的了解。 本書的目標讀者為應用程式開發人員、系統設計者、系統管理員,以及支援工程師等。關於本書的內容,讀者只需要對Linux基本的命令有所瞭解便可輕鬆閱讀。 本書可以幫助你: .開發出有考慮到硬體特性的優良軟體 .瞭解到該依據什麼樣的指標來設計系統 .當OS或硬體相關故障產生時,能夠冷靜處理 作者介紹 作者簡介 武內覺 曾經任職於富士通,負責Linux的核心開發與支援工作。目前為專職的技術顧問。 目錄 第1章 電腦系統的概要 第2章 使用者模式能實現的功能 第3章 行程管理 第4章 行程排程器 第5章 記憶體管理 第6章 記憶體階層 第7章 檔案系統 第8章 儲存裝置
資訊
工程
數學與統計學
機率與統計
自然科學
健康科學
地球與環境
建築、設計與藝術
人文與社會科學
教育
語言學習與考試
法律
會計與財務
大眾傳播
觀光與休閒餐旅
考試用書
研究方法
商業與管理
經濟學
心理學
生活
生活風格商品
參考書/測驗卷/輔材