每天学点GDB 12
生活随笔
收集整理的這篇文章主要介紹了
每天学点GDB 12
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文介紹在archlinux環(huán)境下,如何進(jìn)行內(nèi)核使用gdb配合qemu進(jìn)行調(diào)試。 ? 1. 安裝qemu 2. 編譯linux kernel 選擇最新的內(nèi)核版本,規(guī)避gcc編譯出錯(cuò)的問(wèn)題具體步驟如下 ? ?2.1 make mrproper ? ?2.2 make ARCH=i386 menuconfig ? ? ? ? ?選中kernel hacking->compile the kernel with debug info ? 2.3 make 3.編譯簡(jiǎn)單的init程序 #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv) {while ( 1 ) {prinf("hello,world\n");sleep(10);}return 0;
} ? 編譯生成init #gcc -static -o init hello.c 4. 創(chuàng)建根文件系統(tǒng) ?? dd if=/dev/zero of=myinitrd4M.img bs=4096 count=1024mke2fs -t ext3 myinitrd4M.imgmkdir -p rootfs/devmount -o loop myinitrd4M.img rootfsmknod rootfs/dev/console c 5 1mknod rootfs/dev/ram b 1 0cp init rootfsumount rootfs ? 創(chuàng)建必要的目錄 ? 5. 運(yùn)行內(nèi)核 在一個(gè)終端運(yùn)行 qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd myinitrd4M.img -append? "root=/dev/ram init=/bin/ash" -s -S
在另一個(gè)終端運(yùn)行如下命令啟動(dòng)gdb并調(diào)試 #gdb vmlinux gdb)target remote:1234 gdb)break start_kernel gdb)c 開始內(nèi)核調(diào)試之旅吧
裝置檔
為了使用 command line 以及開機(jī),我們需要新增三項(xiàng)裝置 console 、 null 以及 ttyAMA0 ,在 _install/dev 下鍵入
sudo mknod console c 5 1 sudo mknod null c 1 3 sudo mknod ttyAMA0 c 204 64在另一個(gè)終端運(yùn)行如下命令啟動(dòng)gdb并調(diào)試 #gdb vmlinux gdb)target remote:1234 gdb)break start_kernel gdb)c 開始內(nèi)核調(diào)試之旅吧
轉(zhuǎn)載于:https://www.cnblogs.com/hseagle/p/3294297.html
總結(jié)
以上是生活随笔為你收集整理的每天学点GDB 12的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据中心基础设施管理(DCIM)的市场价
- 下一篇: PAT-python-1096 大美数