您的位置:首页 > 其它

bochs gdb 联合调试

2010-05-23 14:24 309 查看
系统终于还是出现了我无法短时间直接从代码看出来的错误,早就知道这是不可免去的。

我是ubuntu的系统,bochs必须自己编译方可支持与gdb的联合调试。

1.下载bochs.
http://bochs.sourceforge.net/ 下载最新版本。
2.安装依赖。

1: $apt-get install build-essential           //编译工具链,这是必须的

2: $apt-get install xorg-dev                  //图形


3.

1: $tar xvf bochs-2.4.2.tar.gz

2: $cd bochs-2.4.2

3: $./configure --prefix=/opt/bochs/gdbstub --with-x11 --enable-gdb-stub  --enable-disasm --enable-pci --enable-pcidev --enable-plugins --enable-ne2000 --enable-pnic --disable-docbook        //prefix指定目录,自己随意指定即可,docbook在编译的时候会出错,我们把它去掉就是了

4:


4. $sudo make
5. $sudo make install

OK,完成了。试试。

1: //bochsrc

2:

3:   1.megs:32

4:   2 romimage: file=/opt/bochs/gdbstub/share/bochs/BIOS-bochs-latest

5:   3 vgaromimage:file=/opt/bochs/gdbstub/share/bochs/VGABIOS-lgpl-latest

6:   4 floppya:1_44=a.img,status=inserted

7:   5 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14

8:   6 ata0-master: type=disk, path="80m.img", mode=flat, cylinders=162, heads=16,     spt=63

9:   7 boot:a

10:   8 log:out.txt

11:   9 mouse:enabled=0

12: 10 keyboard_mapping:enabled=1,map=/opt/bochs/gdbstub/share/bochs/keymaps/x11-pc-us.map

13: 11 gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

14:


其中11行是打开gdb联合调试。

把bochs做链接到/bin下就可以了
$bochs -q -f bochsrc

打开另一终端运行gdb

1: >target remote localhost:1234


OK.

在调试内核的时候遇到了一个问题,就是gdb找不到symbol.最后才发现是自己一时疏忽,竟然在ld中用-s选项将symbol给清除了。

当然,在生成可执行内核时这是必须的,要不然内核会大好几倍。所以我的做法是在Makefile中修改,将ld的-s选项去掉,并在

生成内核的时候

1: cp -fv kernel.bin kernel.bin.tmp           //复制一个带符号的副本

2: strip kernel.bin.tmp                           //将副本去掉符号

3: cp -fv kernel.bin.tmp /mnt/floppy/kernel.bin     //将副本当做可执行文件放入盘区

4: rm -rf kernel.bin.tmp                               //删掉副本,只留下原来带符号的内核,以便gdb时用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: