每天学点GDB 12
生活随笔
收集整理的這篇文章主要介紹了
每天学点GDB 12
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文介紹在archlinux環境下,如何進行內核使用gdb配合qemu進行調試。 ? 1. 安裝qemu 2. 編譯linux kernel 選擇最新的內核版本,規避gcc編譯出錯的問題具體步驟如下 ? ?2.1 make mrproper ? ?2.2 make ARCH=i386 menuconfig ? ? ? ? ?選中kernel hacking->compile the kernel with debug info ? 2.3 make 3.編譯簡單的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. 創建根文件系統 ?? 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 ? 創建必要的目錄 ? 5. 運行內核 在一個終端運行 qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd myinitrd4M.img -append? "root=/dev/ram init=/bin/ash" -s -S
在另一個終端運行如下命令啟動gdb并調試 #gdb vmlinux gdb)target remote:1234 gdb)break start_kernel gdb)c 開始內核調試之旅吧
裝置檔
為了使用 command line 以及開機,我們需要新增三項裝置 console 、 null 以及 ttyAMA0 ,在 _install/dev 下鍵入
sudo mknod console c 5 1 sudo mknod null c 1 3 sudo mknod ttyAMA0 c 204 64在另一個終端運行如下命令啟動gdb并調試 #gdb vmlinux gdb)target remote:1234 gdb)break start_kernel gdb)c 開始內核調試之旅吧
轉載于:https://www.cnblogs.com/hseagle/p/3294297.html
總結
以上是生活随笔為你收集整理的每天学点GDB 12的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据中心基础设施管理(DCIM)的市场价
- 下一篇: 如何解决电脑弹窗广告?