導航:首頁 > 操作系統 > linux內核debug

linux內核debug

發布時間:2022-10-01 14:27:23

『壹』 怎麼搭建學習linux內核的運行,調試環境

『貳』 linux內核調試的主要方法

1。printk ,以及系統日誌。閱讀源碼,想像代碼運行的情況,結合列印的信息,推測問題所在。

2。內核調試器,例如 Kgdb 。

3。user mode linux 。

4。在虛擬機上調試。例如 Bochs 。

『叄』 編譯進Linux內核的驅動能否進行單步調試

您好:
只能在匯編代碼級進行調試;

優點是不需要兩台機器進行調試。

gdb:在調試模塊時缺少一些至關重要的功能,它可用來查看內核的運行情況,包括反匯編內核函數。

kgdb:能很方便的在源碼級對內核進行調試,缺點是kgdb只能進行遠程調試,它需要一根串口線及兩台機器來調試內核(也可以是在同一台主機上用vmware軟體運行兩個操作系統來調試)

printk() 是調試內核代碼時最常用的一種技術。在內核代碼中的特定位置加入printk()
調試調用,可以直接把所關心的信息打列印到屏幕上,從而可以觀察程序的執行路徑和所關心的變數、指針等信息。 Linux 內核調試器(Linux kernel
debugger,kdb)是 Linux 內核的補丁,它提供了一種在系統能運行時對內核內存和數據結構進行檢查的辦法。Oops、KDB在文章掌握 Linux
調試技術有詳細介紹,大家可以參考。 Kprobes 提供了一個強行進入任何內核常式,並從中斷處理器無干擾地收集信息的介面。使用 Kprobes
可以輕松地收集處理器寄存器和全局數據結構等調試信息,而無需對Linux內核頻繁編譯和啟動,具體使用方法,請參考使用 Kprobes 調試內核。

『肆』 在Linux下如何設置kernel-debug和 kernel-debug-devel,使得可以用crash來分析kernel的mp file

安裝kernel-debug和kernel-debug-devel這兩個包就可以了。
這兩個包可以在安裝光碟的/Server/Package中找到
安裝命令:rpm -ivh kernel-debug*

『伍』 如何打開linux kernel的debug

【1】配置Kconfig,添加要調試驅動模塊的DDEBUG選項,如
kernel_imx\drivers\mxc\pmic\mc13892\Kconfig
config MXC_PMIC_DEBUG
bool "Support MXC PMIC DEBUG"
depends on MXC_PMIC

【2】配置Makefile,添加編譯支持驅動模塊 EXTRA_CFLAGS += -DDEBUG ,如
kernel_imx\drivers\mxc\pmic\core\Makefile
ifeq ($(CONFIG_MXC_PMIC_DEBUG),y)
EXTRA_CFLAGS += -DDEBUG
endif

【3】配置內核,使支持動態調試
make menuconfig
| | Kernel hacking --->
| | [*] Tracers --->
| | [*] Trace max stack
| | [*] Enable dynamic printk() support

| | Device Drivers --->
| | MXC support drivers --->
| | MXC PMIC support --->
| | [*] Support MXC PMIC DEBUG

【4】重燒內核啟動後,改變控制台debug消息顯示級別,可以列印printk(DEBUG ...)信息
echo > /proc/sys/kernel/printk "8"

『陸』 如何調試0.11版的linux內核

編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤
In file included from /usr/include/features.h:378,
from /usr/include/assert.h:37,
from ../../../include/tinyxml/tinystr.h:42,
from ../../../src/tinyxml/tinystr.cpp:32:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 沒有那個文件或目錄
這時候需要安裝 gcc所有支持文件 sudo apt-get install gcc-multilib
將會安裝下列額外的包:
cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1

『柒』 linux debug filesystem怎麼用

在進行系統調試的時候,有可能會使用到debug file system。
下面講解如何具體使用debug file system
1. 在kernel中使用debug file system
make menuconfig --> Kernel hacking --> 選中Debug Filesystem (CONFIG_DEBUG_FS)選項。
make menuconfig --> kernel hacking --> 選中Kernel debugging (CONFIG_DEBUG_KERNEL)選 項。
註:"kernel debugging"選項必須使能,否則在進行第三步的時候,會報「mount: unknown filesystem type 'debugfs'」
2. 編譯kernel,下載並且運行之。
3. 掛載debug file system
# mount -t debugfs none /sys/kernel/debug
或者
# mkdir /debug
# mount -t debugfs none /debug
進入/debug文件夾及其子文件夾獲得想要的信息。

『捌』 如何debuglinux內核,我用ubuntu

可是有沒有一種比較快捷的方法比如說在終端裡面查看呢?答案是肯定的。為了查看 Ubuntu 的版本號,可以採用以下兩種方法之一。方法一在終端中執行下列指令: cat /etc/issue 可以查看當前正在運行的 Ubuntu 的版本號。其輸出結果類似下面的內容: Ubuntu 8.04 /n /l方法二使用 lsb_release 命令也可以查看 Ubuntu 的版本號,與方法一相比,內容更為詳細。執行指令如下: sudo lsb_release -a 將輸出結果: Distributor ID: Ubuntu Description: Ubuntu 8.04 Release: 8.04 Codename: hardy 查看內核版本號的方法是:列印一個終端,輸入命令uname -r

『玖』 Linux內核調試工具KGDB

內核工具KGDB調試環境需要為Linux 內核加上 kgdb補丁,補丁實現GDB遠程調試所需要的功能,包括命令處理、陷阱處理及串口通信3個主要的部分。KGDB補丁的主要作用是在Linux 內核中添加了一個調試Stub。調試Stub是Linux 內核中的一小段代碼,是運行GDB的開發機和所調試內核之間的一個媒介。GDB和調試stub之間通過GDB串列協議進行通信。GDB串列協議是-種基於消息的ASCII 碼協議,包含了各種調試命令。當設置斷點時,KGDB將斷點的指令替換為一條 trap指令,當執行到斷點時控制權就轉移到調試 stub中去。此時,調試stub 的任務就是使用遠程串列通信協議將當前環境傳送給GDB,然後從GDB處接收命令。GDB命令告訴stub 下一步該做什麼,當stub收到繼續執行的命令時,將恢復程序的運行環境,把對 CPU的控制權重新交還給內核。KGDB補丁給內核添加以下3個部件:
(1 ) GDB stub
GDB stub被稱為調試插樁(簡稱為stub),是KGDB調試器的核心。它是Linux內核中的一小段代碼,用來處理主機上: GDB發來的各種請求;並且在內核處於被調試狀態時,控制目標機板上的處理器。
(2)修改異常處理函數
當這個異常發生時,內核將控制權交給KGDB調試器,程序進入KGDB提供的異常處理函數中。在裡面,可以分析程序的各種情況。
(3)串口通信
GDB和 stub之間通過GDB串列協議進行通信。它是一種基於消息的ASCII 碼協議,包含了各種調試命令。除串口外,也可以使用網卡進行通信。以設置內核斷點為例說明KGDB與GDB之間的工作過程。設置斷點時,KGDB修改內核代碼,將斷點位置的指令替換成一條異常指令(在ARM中這是一條未定義的指令)。當執行到斷點時發生異常,控制權轉移到stub 的異常處理函數中。此時,stub的任務就是使用GDB串列通信協議將當前環境傳送給GDB,然後從GDB處接收命令,GDB命令告訴stub下一步該做什麼。當stub收到繼續執行的命令時,將恢復原來替換的指令、恢復程序的運行環境,把對CPU的控制權重新交還給內核。

『拾』 linux debug filesystem怎麼用

在進行系統調試的時候,有可能會使用到debug
file
system。
下面講解如何具體使用debug
file
system
1.
在kernel中使用debug
file
system
make
menuconfig
-->
Kernel
hacking
-->
選中Debug
Filesystem
(CONFIG_DEBUG_FS)選項。
make
menuconfig
-->
kernel
hacking
-->
選中Kernel
debugging
(CONFIG_DEBUG_KERNEL)選
項。
註:"kernel
debugging"選項必須使能,否則在進行第三步的時候,會報「mount:
unknown
filesystem
type
'debugfs'」
2.
編譯kernel,下載並且運行之。
3.
掛載debug
file
system
#
mount
-t
debugfs
none
/sys/kernel/debug
或者
#
mkdir
/debug
#
mount
-t
debugfs
none
/debug
進入/debug文件夾及其子文件夾獲得想要的信息。

閱讀全文

與linux內核debug相關的資料

熱點內容
解放壓縮機支架 瀏覽:253
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:799
壓縮泡沫鞋底底材 瀏覽:219
程序員職場第一課2正確的溝通 瀏覽:679
遇到不合法app應該怎麼辦 瀏覽:90
匯編程序編譯後的文件 瀏覽:79
大智慧均線源碼 瀏覽:373
單片機排阻的作用 瀏覽:215
滴滴金融app被下架如何還款 瀏覽:212
jpg轉換成pdf免費軟體 瀏覽:743
范里安pdf 瀏覽:447
偽造pdf 瀏覽:79
能刪除android文件夾嗎 瀏覽:447