QEMU GDB 除錯核心

2021-10-02 09:12:44 字數 2184 閱讀 4229

執行除錯技巧

參考資料

本篇文章用來qemu&gdb除錯核心使用

root=/root/runlinux/chapter1

rootfs=

$root/fs

rootfs_img=

$root/rootfs.img

rootfs_img_mount=/mnt/rootfs

kernel_root=

$root/linux-4.0

kernel_img=

$kernel_root/arch/arm/boot/zimage

kernel_dtb=

$kernel_root/arch/arm/boot/dts/vexpress-v2p-ca9.dtb

首先修改makefile 檔案中的架構以及編譯工具鏈

# arch		?= $(subarch)

arch ?= arm

# cross_compile ?= $(config_cross_compile:"%"=%)

cross_compile ?= arm-linux-gnueabi-

以及 將 優化等級修改為-o1

ifdef config_cc_optimize_for_size

kbuild_cflags += -o1 $(call cc-disable-warning,maybe-uninitialized,)

else

kbuild_cflags += -o1

endif

最開始是想修改為-o0的,但是編譯出現了問題。就只好修改為-o1。區別不是太大。

root@zhou 12:03:35 ~/r/c/linux-4.0 # make vexpress_defconfig

root@zhou 12:03:48 ~/r/c/linux-4.0 # make menuconfig

# kernel hacking --->

# compile-time checks and compiler options --->

# [*] compile the kernel with debug info

make bzimage -j2

make dtbs

生成最小檔案系統的步驟,暫時略過。大致的思路就是,製作乙個映象。然後將其格式化為 乙個 ext3的檔案系統映象。其他的格式也可以。

qemu-system-arm -m vexpress-a9 -smp 4 -m 100m -kernel $kernel_img \

-dtb $kernel_dtb -nographic \

-sd $rootfs_img \

-s -s

# -s 表示 qemu 將會凍結虛擬機器

# -s 表示在 1234埠接收 gdb的除錯

root@zhou 14:27:57 ~ # apt-get install gdb-multiarch

root@zhou 14:28:06 ~ # cd runlinux/chapter1/linux-4.0

# 在次資料夾下面擁有 vmlinux 檔案

root@zhou 23:47:06 ~/r/c/linux-4.0 # gdb-multiarch vmlinux

(gdb)

set architecture arm

(gdb) target remote localhost:1234

(gdb) b start_kernel

# 指定某資料夾下面的斷點

(gdb) b path/to/filename: line

(gdb) b path/to/filename: funcation

(gdb) b funcation

(gdb) info b

(gdb) delet index[1~unlim]

輸出變數
(gdb) print ret

QEMU GDB除錯核心

gdb qemu的方式是一種比較常見的除錯核心和驅動的方法,這裡寫的是我在安裝和使用gdb qemu時碰到的一些問題的筆記總結。環境準備 直接安裝 debian系統,可以直接apt get install qemu 開始我使用的安裝包直接安裝的gdb,但是在使用過程中會報下面的錯誤 圖1opncls...

使用Qemu gdb來除錯核心

昨天聽別人講使用qemu和gdb來實現原始碼級核心除錯,今天試了一下,果然非常方便,現簡單的記錄一下。qemu是乙個開源的虛擬機器軟體,能夠提供全系統的 可以執行在多個平台上,並 多個別的平台。qemu虛擬機器是採用動態翻譯來實現cpu的 的,對硬體的依賴程度低,通過它提供的眾多引數,你能夠對虛擬的...

使用Qemu gdb來除錯核心

昨天聽別人講使用qemu和gdb來實現原始碼級核心除錯,今天試了一下,果然非常方便,現簡單的記錄一下。qemu是乙個開源的虛擬機器軟體,能夠提供全系統的 可以執行在多個平台上,並 多個別的平台。qemu虛擬機器是採用動態翻譯來實現cpu的 的,對硬體的依賴程度低,通過它提供的眾多引數,你能夠對虛擬的...