linux核心除錯技巧四:gdb除錯+vmlinux
vmlinux是個elf檔案,它的符號表中包含了所有核心符號。
注意linux中很多檔案是沒有後綴的,比如我見到的這個elf檔案的檔名是“vmlinux-3.10.62”,沒有後綴。
既然是elf檔案那就可以用 點選開啟連結 裡面的方法直接檢視符號表。
要想看得更仔細,可以用gdb除錯工具。
(1)進入vmlinux所在目錄
(2)執行 arm-wrs-linux-gnu-gdb vmlinux-3.10.62
(3)輸入 list*(函式名+函式內偏移) 即可檢視特定位置的程式碼
相關推薦
linux核心除錯技巧四:gdb除錯+vmlinux
vmlinux是個elf檔案,它的符號表中包含了所有核心符號。 注意linux中很多檔案是沒有後綴的,比如我見到的這個elf檔案的檔名是“vmlinux-3.10.62”,沒有後綴。 既然是elf檔案
除錯技巧(一):OOPS除錯
當核心出現類似使用者空間的Segmentation Fault時(例如核心訪問一個並不存在的虛擬地址), Oops會被列印到控制檯和寫入核心log緩衝區。 我們在globalmem.c的globalmem_read()函式中加上下面一行程式碼 } else { *ppo
linux核心除錯技巧三:kallsyms
kallsyms是linux的一個子系統,顧名思義,kernel_all_syms,也就是核心的所有符號。 kallsyms子系統的功能是把核心程式碼的所有符號(其實不是所有,沒仔細研究,不過重要的都
linux核心除錯技巧一:printk
printk是Linux核心的一個系統呼叫,也是核心程式碼除錯時最常用的技巧。 printk的格式化字串,參考:點選開啟連結 對於迴圈中的變數,或者被多次呼叫的函式裡面的變數, 有時候只需要列印一次,
Linux核心分析之三——使用gdb跟蹤除錯核心從start_kernel到init程序啟動
作者:姚開健 原創作品轉載請註明出處 《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 Linux核心(本文以Linux-3.18.6為例)的啟動在原始碼init資料夾裡的main.c
除錯技巧(三):strace
在Linux系統中, strace是一種相當有效的跟蹤工具,它的主要特點是可以被用來監視系統呼叫。我們不僅可以用strace除錯一個新開始的程式,也可以除錯一個已經在執行的程式(這意味著把strace繫結到一個已有的PID上)。對於globalmem字元裝置檔案,以strace方式執行如程式碼所
除錯技巧(二):BUG_ON(), WARN_ON()和panic()
核心中有許多地方呼叫類似BUG()的語句,它非常像一個核心執行時的斷言,意味著本來不該執行到BUG()這條語句,一旦執行即丟擲Oops。 BUG()的定義為: #define BUG() do { \ printk("BUG: failure at %s:%d/%s()!\n", __FI
linux核心發生段錯誤時進行除錯
發生段錯誤原因就是訪問了不該訪問的地址,例如訪問了不存在的記憶體地址、訪問了系統保護的記憶體地址、訪問了只讀的記憶體地址等。 下面根據Oops資訊來分析一下段錯誤 first_drv.c 點選(此處)摺疊或開啟 #include <linux/module.h
llvm 學習筆記 1 :gdb 除錯 llvm
1. 編譯出 llvm 系列的 debug 版本,不過據學長說比 release 版要慢 10倍。除錯也可以在 release 版輸出資訊。 2. 使用 -v 引數輸出全部的引數資訊。clang -flto -c hello.c -v 3. 使用 gdb clang 進入
Linux核心模組驅動載入與dmesg除錯
因為近期用到了Linux核心的相關知識,下面隨筆將給出核心模組的編寫記錄,供大家參考。 1、執行環境 Ubuntu 版本:20.04 Linux核心版本:5.4.0-42-generic gcc版本:gcc version 9.3.0 驅動和一般應用程式的執行方式很大不同 2、核
Linux時間子系統之四:定時器的引擎:clock_event_device
到來 開始 register 工作模式 統一 10個 net 說過 序列 早期的內核版本中,進程的調度基於一個稱之為tick的時鐘滴答,通常使用時鐘中斷來定時地產生tick信號,每次tick定時中斷都會進行進程的統計和調度,並對tick進行計數,記錄在一個jiffies變量
linux初級學習筆記四:Linux文件管理類命令詳解!(視頻序號:03_1)
單詞 linux初級 linux文件管理 查看 stat 顯示行數 swd 字符處理 行數 本節學習的命令:cat(tac),more,less,head,tail,cut,sort,uniq,wc,tr 本節學習的技能:目錄管理 文件管理
Python 程式碼除錯技巧使用 PyDev 進行除錯
(?)[-] 使用 pdb 進行除錯 表 1 pdb 常用命令 清單 1 測試程式碼示例 清單 2 利用 pdb 除錯 清單 3 退出 debug 清單 4 debug 過程中列印變數 清單 5 停止 de
Facebook開源Linux核心元件和工具:BPF、Btrfs、Netconsd、Cgroup2、PSI、Oomd
內容摘要: 作者:Tejun Heo(Facebook的軟體工程師)和Thomas Connally。 Facebook工程文化的一個組成部分始終是我們的開發團隊致力於開發開源解決方案,以解決實際的生產問題,並應對現代大規模雲端計算的重大挑戰。今天,我們宣佈了一套解決重要
Chrome - JavaScript除錯技巧總結(瀏覽器除錯JS)
Chrome 是 Google 出品的一款非常優秀的瀏覽器,其內建了開發者工具( Windows 系統中按下 F12 即可開啟),可以讓我們方便地對 JavaScript 程式碼進行除錯。 為方便大家學習和使用,本文我對 Chrome 的除錯技巧做個系統的
《深入分析Linux核心原始碼》筆記:Linux 核心結構
一、Linux 核心在整個作業系統中的位置 圖1 Linux核心在整個作業系統中的位置 1)使用者程序 使用者程序位於作業系統的最上層,它執行在作業系統上,成為一個作業系統中的一個程序。 2)系統呼叫介面 應用程式中,可以
《深入分析linux核心原始碼》筆記:linux 核心原始碼
一、Linux核心原始碼的結構 Linux 核心原始碼位於/usr/src/linux 目錄下。 include/目錄包含了建立核心程式碼時所需的大部分包含檔案,這個模組利用其他模組重建核心。 i
【Linux核心學習筆記四】記憶體管理-夥伴系統
1.夥伴系統演算法描述 linux系統採用夥伴系統演算法來解決外碎片問題。主要做法是記錄現存的空閒連續頁框塊的情況,以儘量避免為滿足對小塊的請求而分割大的空閒塊。 夥伴系統演算法中,把所有的空閒頁框分為11個組,每個組對應一個連結串列,每個連結串列分
Linux核心編譯與安裝:4.4.0-21→4.14.0
1. 背景從事Linux環境下開發工作,一直想自己玩,純屬好奇,沒撒背景。2. 編譯環境zg-Linux etc # uname–a(檢視核心)Linux zg-Linux 4.4.0-21-generic #37-UbuntuSMP Mon Apr 18 1
Linux核心工程導論——程序:ELF檔案執行原理(2)
ELF強符號與弱符號(本小節是轉別人的)我們經常在程式設計中碰到一種情況叫符號重複定義。多個目標檔案中含有相同名字全域性符號的定義,那麼這些目標檔案連結的時候將會出現符號重複定義的錯誤。比如我們在目標檔案A和目標檔案B都定義了一個全域性整形變數global,並將它們都初始化,