1. 程式人生 > >linux核心除錯技巧三:kallsyms

linux核心除錯技巧三:kallsyms

kallsyms是linux的一個子系統,顧名思義,kernel_all_syms,也就是核心的所有符號。

kallsyms子系統的功能是把核心程式碼的所有符號(其實不是所有,沒仔細研究,不過重要的都有了)抽取出來,做成一個符號表,從而方便除錯。

除了除錯之外,Linux程式也可以直接查詢這個符號表。

在livepatch中就是通過查詢這個符號表,根據符號名得到符號的地址。

開啟kallsyms子系統的方法:

核心配置系統中設定CONFIG_KALLSYMS=y,CONFIG_KALLSYMS_ALL=y

相關推薦

linux核心除錯技巧kallsyms

kallsyms是linux的一個子系統,顧名思義,kernel_all_syms,也就是核心的所有符號。 kallsyms子系統的功能是把核心程式碼的所有符號(其實不是所有,沒仔細研究,不過重要的都

linux核心除錯技巧gdb除錯+vmlinux

vmlinux是個elf檔案,它的符號表中包含了所有核心符號。 注意linux中很多檔案是沒有後綴的,比如我見到的這個elf檔案的檔名是“vmlinux-3.10.62”,沒有後綴。 既然是elf檔案

linux核心除錯技巧printk

printk是Linux核心的一個系統呼叫,也是核心程式碼除錯時最常用的技巧。 printk的格式化字串,參考:點選開啟連結 對於迴圈中的變數,或者被多次呼叫的函式裡面的變數, 有時候只需要列印一次,

linux核心除錯技巧之一 dump_stack【轉】

在核心中程式碼呼叫過程難以跟蹤,上下文關係複雜,確實讓人頭痛 呼叫dump_stack()就會列印當前cpu的堆疊的呼叫函數了。 如此,一目瞭然的就能看到當前上下文環境,呼叫關係了 假設: 遇到uvc_probe_video這麼一個函式,不知道它最終是被誰呼叫到的,根據linux裝置模型,初步推測,p

除錯技巧()strace

在Linux系統中, strace是一種相當有效的跟蹤工具,它的主要特點是可以被用來監視系統呼叫。我們不僅可以用strace除錯一個新開始的程式,也可以除錯一個已經在執行的程式(這意味著把strace繫結到一個已有的PID上)。對於globalmem字元裝置檔案,以strace方式執行如程式碼所

Linux核心分析之——使用gdb跟蹤除錯核心從start_kernel到init程序啟動

作者:姚開健 原創作品轉載請註明出處 《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 Linux核心(本文以Linux-3.18.6為例)的啟動在原始碼init資料夾裡的main.c

第一次項目上Linux服務器(安裝Tomcat及相關命令)

切換 總結 情況 xshel TP tomcat日誌 跟蹤 src down 一、下載Tomcat   去官網:http://tomcat.apache.org/ 找到要下載的Tomcat      本人下載的是apache-tomcat-8.5.29.tar.gz,百

嵌入式Linux開發——(十六)Linux核心除錯技術

1、核心列印函式printk     ①printk函式與printf函式用法格式完全相同     ②它所列印的字串頭部可以加入“<n>”樣式字元,n=0---7表示這條資訊的記錄  級別     ③對於p

Facebook開源Linux核心元件和工具BPF、Btrfs、Netconsd、Cgroup2、PSI、Oomd

內容摘要: 作者:Tejun Heo(Facebook的軟體工程師)和Thomas Connally。 Facebook工程文化的一個組成部分始終是我們的開發團隊致力於開發開源解決方案,以解決實際的生產問題,並應對現代大規模雲端計算的重大挑戰。今天,我們宣佈了一套解決重要

除錯技巧(二)BUG_ON(), WARN_ON()和panic()

核心中有許多地方呼叫類似BUG()的語句,它非常像一個核心執行時的斷言,意味著本來不該執行到BUG()這條語句,一旦執行即丟擲Oops。 BUG()的定義為: #define BUG() do { \ printk("BUG: failure at %s:%d/%s()!\n", __FI

除錯技巧(一)OOPS除錯

當核心出現類似使用者空間的Segmentation Fault時(例如核心訪問一個並不存在的虛擬地址), Oops會被列印到控制檯和寫入核心log緩衝區。 我們在globalmem.c的globalmem_read()函式中加上下面一行程式碼   } else { *ppo

工業網際網路平臺核心技術之平行計算與分散式計算

之所以將兩種計算技術放在一起,是因為這兩種計算具有共同的特點,都是運用並行來獲得更高效能運算,把大任務分為N個小任務。但兩者還是有區別的,關於兩者的區別在後面說。 一、平行計算 1、平行計算概念 平行計算又稱平行計算是指一種能夠讓多條指令同時進行的計算模式,可分為時

《深入分析Linux核心原始碼》筆記Linux 核心結構

一、Linux 核心在整個作業系統中的位置                      圖1 Linux核心在整個作業系統中的位置 1)使用者程序 使用者程序位於作業系統的最上層,它執行在作業系統上,成為一個作業系統中的一個程序。 2)系統呼叫介面 應用程式中,可以

《深入分析linux核心原始碼》筆記linux 核心原始碼

一、Linux核心原始碼的結構 Linux 核心原始碼位於/usr/src/linux 目錄下。 include/目錄包含了建立核心程式碼時所需的大部分包含檔案,這個模組利用其他模組重建核心。 i

Linux個人筆記(一些軟體的安裝配置)

001、5.6版本的MySQL的安裝 ①下載軟體包 #建議吧所有軟體包都放到這個目錄下面 cd /usr/local/src #下載---截止2018年10月7日仍然有效,如果失效了,可以看一下這個

Linux作業系統備份之通過二進位制拷貝(dd)方式實現Linux作業系統資料的備份

今天我們介紹另外一種粗曠,但是相對簡單的備份方法:通過dd命令二進位制拷貝方式備份作業系統資料。dd拷貝的方式不能線上實施,因為dd是二進位制的塊拷貝,若拷貝過程中有寫檔案操作,會導致檔案系統不一致(如某個節點建立到一半被dd拷貝走了),因此,這種方式必須進入記憶體操作系的單使用者模式下操作,實施

linux核心除錯環境搭建

版本linux4.17 ubuntu18.04先給系統至少80G記憶體1。編譯核心先配置檔案make mrpropermake menuconfig我這裡需要的依賴有 sudo apt install make cmake gcc g++ clang sudo apt-get install libnc

Linux核心除錯的方式以及工具集錦

本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作 因本人技術水平和知識面有限, 內容如有紕漏或者需要修正的地方, 歡迎大家指正, 也歡迎大家提供一些其他好的除錯工具以供收錄, 鄙人在此謝

linux核心除錯方法

核心開發比使用者空間開發更難的一個因素就是核心除錯艱難。核心錯誤往往會導致系統宕機,很難保留出錯時的現場。除錯核心的關鍵在於你的對核心的深刻理解。 一  除錯前的準備 在除錯一個bug之前,我們所要做的準備工作有: 有一個被確認的bug。 包含這個bug的核心

Linux 核心編譯(天吐血經歷!)

將粘貼後欄位裡面的  linux    /boot/vmlinuz-2.6.35-22-generic      initrd    /boot/initrd.img-2.6.35-22-generic  改成你的核心檔案地址和initrd 地址:  linux   /boot/vmlinuz-2.6.32.