gdb+bochs配置过程
来源:互联网 发布:随机数抽奖软件 编辑:程序博客网 时间:2024/06/08 11:49
1. 安装bochs
m@mV:~/soft/bochs-2.6.8$ ./configure --with-sdl2 --enable-disasm --enable-gdb-stubm@mV:~/soft/bochs-2.6.8$ makem@mV:~/soft/bochs-2.6.8$ sudo make install
bochs的配置文件大概长成这样,这里主要关注第一行
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0memory: guest=512, host=256romimage: file=$BXSHARE/BIOS-bochs-latestvgaromimage: file=$BXSHARE/VGABIOS-lgpl-latestmouse: enabled=0pci: enabled=1, chipset=i440fxprivate_colormap: enabled=0floppya: 1_44=obj/a.img, status=insertedata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9boot: floppyfloppy_bootsig_check: disabled=0log: obj/bochsout.txtpanic: action=askerror: action=reportinfo: action=reportdebug: action=ignore, pci=report # report BX_DEBUG from module 'pci'debugger_log: -parport1: enabled=1, file="parport.out"speaker: enabled=1, mode=sound
2. 使用gdb+bochs调试内核
启动一个终端运行bochs
m@mV:~/wspace/os/myos_onx86$ make runmake premake...dd if=/dev/zero of=obj/a.img bs=1k count=1440记录了1440+0 的读入记录了1440+0 的写出1474560 bytes (1.5 MB, 1.4 MiB) copied, 0.0088694 s, 166 MB/snasm src/boot/boot.asm -o ./obj/boot.o -l ./obj/boot.map./tool/bin/img_mker -add_sect ./obj/boot.o ./obj/a.img 0nasm src/boot/loader.asm -o ./obj/loader.o -l ./obj/loader.map./tool/bin/img_mker -add_sect ./obj/loader.o ./obj/a.img 1./tool/bin/img_mker -add_sect ./obj/kernel.bin.g ./obj/a.img 121bochs -qf img/bochsrc_naked======================================================================== Bochs x86 Emulator 2.6.8 Built from SVN snapshot on May 3, 2015 Compiled on Oct 21 2016 at 23:09:21========================================================================00000000000i[ ] BXSHARE not set. using compile time default '/usr/local/share/bochs'00000000000i[ ] reading configuration from img/bochsrc_naked00000000000i[ ] Enabled gdbstub00000000000e[ ] img/bochsrc_naked:22: invalid choice 'sound' parameter 'mode'00000000000e[PCSPK ] img/bochsrc_naked:22: unknown parameter for speaker ignored.00000000000i[ ] installing sdl2 module as the Bochs GUI00000000000i[SDL2 ] maximum host resolution: x=2560 y=160000000000000i[ ] using log file obj/bochsout.txt
Waiting for gdb connection on port 1234
Connected to 127.0.0.1(在另一终端gdb输入target remote localhost:1234时,此行提示才输出)
再开一个终端
m@mV:~/wspace/os/myos_onx86$ gdb ./obj/kernel.bin.g GNU gdb (Ubuntu 7.11-0ubuntu1) 7.11Copyright (C) 2016 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "i686-linux-gnu".Type "show configuration" for configuration details.For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>.Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".Type "apropos word" to search for commands related to "word"...Reading symbols from ./obj/kernel.bin.g...done.(gdb) b kernel_main Breakpoint 1 at 0x30b4e: file src/kernel/main.c, line 28.(gdb) target remote localhost:1234Remote debugging using localhost:12340x0000fff0 in ?? ()(gdb) cContinuing.Breakpoint 1, kernel_main () at src/kernel/main.c:2727void kernel_main() {(gdb) l22 ++i;23 delay(100);24 }25}2627void kernel_main() {28 PROCESS* p = proc_table;2930 clear_screen();31 set_text_attr(TA_FOREGROUND_RED);(gdb) n28 PROCESS* p = proc_table;(gdb) p proc_table $1 = {{ regs = { gs = 0, fs = 0, es = 0, ds = 0, edi = 0, esi = 0, ebp = 0, kernel_esp = 0, ebx = 0, edx = 0, ecx = 0, eax = 0, retaddr = 0, eip = 0, cs = 0, eflags = 0, esp = 0, ss = 0 }, ldt_sel = 0, ldts = {{---Type <return> to continue, or q <return> to quit---n limit_low = 0, base_low = 0, base_mid = 0 '\000', attr1 = 0 '\000', limit_high_attr2 = 0 '\000', base_high = 0 '\000' }, { limit_low = 0, base_low = 0, base_mid = 0 '\000', attr1 = 0 '\000', limit_high_attr2 = 0 '\000', base_high = 0 '\000' }}, pid = 0, p_name = '\000' <repeats 15 times> }}(gdb) n30 clear_screen();(gdb) l25}2627void kernel_main() {28 PROCESS* p = proc_table;2930 clear_screen();31 set_text_attr(TA_FOREGROUND_RED);32 printf("kernel_main\n");33 set_text_attr(TA_FOREGROUND_GREEN | TA_FOREGROUND_INTESITY);34 printf("text color test.\n");(gdb) n31 set_text_attr(TA_FOREGROUND_RED);(gdb) sset_text_attr (attr=4 '\004') at src/lib/string.c:3333 g_text_attr = attr;(gdb) pstk ebp->0x32fec:0x0003301c esp->0x32fe8:0x00033004(gdb) p g_text_attr $2 = 15 '\017'(gdb) p/x g_text_attr $3 = 0xf(gdb)
0 0
- gdb+bochs配置过程
- bochs gdb 联合调试
- Bochs 配置
- 配置Bochs过程中出现的错误(转)
- 《自己动手写操作系统》bochs配置过程中的问题
- bochs + gdb 调试linux0.11
- qt eclipse mingw gdb 配置过程
- bochs虚拟机配置
- Ubuntu安装配置bochs
- 配置bochs 2.4.1
- 虚拟机bochs使用配置
- 虚拟机bochs使用配置
- bochs上网及配置
- bochs安装及配置
- bochs安装配置
- 编译bochs并启用GDB调试
- 利用GDB和Bochs调试内核源代码
- bochs+gdb联调linux-0.11内核
- 打印空心菱形
- 稀疏矩阵三元组转化
- MyBatis常见接口和jar包介绍
- linux系统用户权限
- KNN(K nearest neighbor)算法
- gdb+bochs配置过程
- 清除未接来电及通知
- 神经网络入门2
- Java集合类: Set、List、Map、Queue使用场景梳理
- linux设置固定ip
- 2016年8月到9月参加IT校招总结
- Haskell作业2(2)|放大字符串
- 实战学习NodeJS建站(5)—nodejs 访问 redis
- 字符串函数strlen