zoukankan      html  css  js  c++  java
  • bochs+gdb源码级调试Linux 0.12内核测试环境构建

    http://www.linuxidc.com/Linux/2011-06/36746.htm

    之前都是用的bochs自带的debug功能,但是linux内核大部分都是用C语言来实现的,若仅通过反汇编的汇编来学习,太累了。。。

    所以今天花了一个上午的时间,搭建起了bochs+gbd的联调huanjing。

    安装环境:Ubuntu 11.04 (2.6.38) bochs 2.4.6 gdb 4.5.2

    首先还是要安装bochs,仍然是推荐使用最新的版本(2.4.6),如果使用像2.3.6等老版本,也许会导致后面与gdb无法远程连接 (NND,就是这个恶心的问题浪费了我几个小时。。。) linux上还是要从bochs的源码编译开始安装,bin文件安装的版本无法提供调试功能。配置bochs源码时,输入命令 ./configure --enable-gdb-stub,然后使用make和sudo make install命令完成安装。

    安装时可能会遇到X windows库不全的情况,可以通过apt-get安装xorg-dev解决。

    接着是配置bochs虚拟机环境,配置一个.bxrc文件和生产一个根文件系统镜像文件,建议直接到oldlinux上下载一个linux- 0.11-gdb-rh9-050619.tar.gz,其中已经包含了配置好的这两个文件,另外在linux文件夹下有linux0.11的源码。

    .bxrc文件中主要是添加了一条调试信息

    gdbstub: enable=1, port=1234, text_base=0, data_base=0, bss_base=0

    另外,这个bxrc文件中需要稍稍修改一些东西:

    1. romimage: file=$BXSHARE/BIOS-bochs-latest,  address=0xf0000

    改成 romimage: file=$BXSHARE/BIOS-bochs-latest

    2. floppy_command_delay: 50000

    改成 #floppy_command_delay: 50000

    3.ips: 4000000

    改成 cpu: count=1, ips=4000000

    接着就可以来进行联调了。

    1. 打开两个终端。

    2. 一个终端进入到linux-gdb-rh9/,运行程序"./run",此时窗口显示等待信息“wait for gdb connection on localhost:1234”

    3. 另一个终端进入linux-gdb-rh9/linux/,运行 gdb tools/system

    4. 在gdb窗口中输入b main(在main函数处下断)

    5. 输入target remote localhost:1234 ,连接到bochs虚拟机上

    6. 输入c,让程序持续运行,直到终端在main函数中

    7. 可以开始使用gdb进行源码调试了^_^

    之后可以对源代码进行修改再调试。需要注意的是,早期源码默认的汇编编译器为gas,链接器为gld,所以在Makefile文件中显示声明 as=gas ld=gld。而在ubuntu 11.04中,gcc早已成为默认的编译器了,所以如果是另外下载的源码,需要将Makefile中的as=gas ld=gld改成 as=as, ld=ld 。。。(这个修改确实比较2。。。)


    <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
    阅读(748) | 评论(0) | 转发(3) |
    给主人留下些什么吧!~~
    评论热议
  • 相关阅读:
    CHIL-ORACLE-truncate 语法 清空表数据
    CHIL-ORACLE-复制表结构与复制表数据
    CHIL-ORACLE-伪列
    CHIL-ORACLE-给表插入数据
    CHIL-ORACLE-修改
    CHIL-ORACLE-创建同义词
    CHIL-ORACLE-创建默认约束
    CHIL-ORACLE-创建视图
    CHIL-ORACLE-检查约束(check)
    CHIL-ORACLE-主外键约束(primary key / foreign key)
  • 原文地址:https://www.cnblogs.com/ztguang/p/12648197.html
Copyright © 2011-2022 走看看