構建調試Linux內核網絡代碼的環境MenuOS系統


構建MenuOS系統

1.將指定文件拷貝到本地:

git clone https://github.com/mengning/linuxnet.git

此過程可能需要輸入github賬號和密碼。

2.進入目錄linuxnet,使用make命令編譯根文件系統:

cd linuxnet
make rootfs

3.在Makefile文件中有一條指令用於開啟menu系統(不需要自己輸入):

qmenu -kernel ../../linux-3.18.6/arch/x86/bzImage -initrd ../rootfs.img

測試QEMU

1.在QEMU中完成TCP客戶端和服務器發送和接收hello/hi以驗證MenuOS正常工作:

MenuOS>> replyhi
# Please input hello...
MenuOS>> hello

  • 結果顯示TCP客戶端和服務器正常工作,打印出了預期的信息

2.修改Makefile內容,rootfs標簽下啟動QEMU的命令尾部添加-s

3.重新make rootfs,啟動QEMU

4.啟動調試,連接到server

gdb
(gdb) file ../../linux-3.18.6/vmlinux
(gdb) target remote:1234    # 連接到gdbserver

5.設置斷點,驗證gdb對start_kernelsys_socketcall這兩個內核函數的跟蹤是否可行

(gdb) break start_kernel
(gdb) break sys_socketcall

  • 結果顯示gdb可以追蹤到start_kernel函數,斷點在init/mian.c的501行;也可以追蹤到sys_socketcall函數,斷點在net/socket.c文件的2492行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM