+++++++++++++++使用 调试功能
1. 编译带gdbstub的Bochs系统
http://sourceforge.net/projects/bochs/
http://sourceforge.net/projects/bochs/files/bochs/
[root@bogon bochs-2.6]# ./configure --enable-gdb-stub
[root@bogon bochs-2.6]# make
[root@bogon bochs-2.6]# make install
[root@bogon bochs-2.6]# which bochs
/usr/local/bin/bochs
[root@bogon bochs-2.6]#
2.
bochs 的 配置文件
bochsrc
bochsrc-fd1-gdb.bxrc
bochsrc-hdc-gdb.bxrc
3. 下载 linux-0.11-gdb-rh9-050619.tar.gz
http://oldlinux.org/Linux.old/bochs/linux-0.11-gdb-rh9-050619.tar.gz
4. 打开 两个 终端窗口
注意:
bochs 模拟器 窗口 和其他窗口的 切换,必须 通过鼠标,不能 使用 ALT + TAB 组合键切换
第一个终端窗口
[root@bogon linux-gdb-rh9]# pwd
/root/桌面/linux-gdb-rh9
[root@bogon linux-gdb-rh9]# ls
bochsout.txt bochsrc-fd1-gdb.bxrc bootroot-0.11 parport.out rootimage-0.11-for-orig
bochsrc bochsrc-fd1-gdb.bxrc~ Image-org README run
bochsrc~ bootimage-0.11-20040305 linux rootimage-0.11-20040305
[root@bogon linux-gdb-rh9]# bochs -q -f bochsrc-fd1-gdb.bxrc
第二个终端窗口
[root@bogon linux-gdb-rh9]# pwd
/root/桌面/linux-gdb-rh9
[root@bogon linux-gdb-rh9]# vim linux/Image -b
请参考“
vim+xxd=强大的十六进制编辑器
”
将 1d02 55aa 改为 0000 55aa //软盘文件系统
将 1d02 55aa 改为 0103 55aa //硬盘文件系统
[root@localhost linux-gdb-rh9]# gdb linux/tools/system
(gdb) break main
(gdb) target remote localhost:1234
(gdb) cont
//出错
[Thread
] #1 stopped.
0x0000a0ec in page_fault ()
(gdb)
//解决方法,在 (gdb) 命令行,一直按 ENTER 键。
(gdb) next
-----------------
现在所有的步骤都正确执行了,gdb能够和bochs连接了,但是linux0.11在运行的时候,却在启动过程中出现页错误,具体信息是:
program received signal 0, Signale 0.
0x0000a0ec in page_fault().
解答:缺页中断是正常的处理,按enter将对应的数据加载到内存中就过去了。
-----------------
gdb tools/system命令的主要目的是装入符号表,而符号信息只存在于system目标文件中,Image文件是内核映像文件,不包含符号信息。
你可以用下面的命令系列来执行,可能更容易理解。
gdb (直接进入gdb)
target remote localhost:1234 (设置远程主机)
symbol-file tools/system (装入符号表信息)
其实代码是在远程主机(bochs)上执行的,在本地主机上运行的gdb,它只需要符号表信息就OK了。
-----------------
+++++++++++++++下面不用 调试功能
1. 修改 bochsrc-fd1-gdb.bxrc
将第一行 注释,即:# gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
2. 下载
linux-0.11-for-gcc4.3.2.tar.gz
http://oldlinux.org/oldlinux/viewthread.php?tid=11651&extra=page%3D1
3. 解压、编译 内核,生成 Image, 然后,
[root@bogon linux]# vim Image -b
将 1d02 55aa 改为 0000 55aa //软盘文件系统
4. 将修改后的 Image 以及 System.map 复制到 linux-gdb-rh9/linux
5. [root@bogon linux-gdb-rh9]# bochs -q -f bochsrc-fd1-gdb.bxrc
6. 如果修改 0.11内核源代码,重复 1~5,验证是否符合自己的功能需求。
+++++++++++linux下面 阅读 linux 0.11 内核源代码
1. 下载、安装 wine
2. 下载、安装 Source Insight 3.5
++++++++++++++++++++++++++++++++++++++++++下面不用
2. 编译带调试信息的Linux 0.11内核
http://blog.chinaunix.net/uid-27062906-id-3380279.html
从下面的链接下载一个可以在gcc4.0下正常编译和运行的内核版本,这是我们能够找到最接近目前环境的正常版本:
http://www.oldlinux.org/Linux.old/kernel/0.1x/linux-0.11-060618-gcc4.tar.gz
或
http://dipplum.com/linux-0.11-lab/linux-0.11-060618-gcc4.tar.gz
[root@bogon ~]# wget http://dipplum.com/linux-0.11-lab/linux-0.11-060618-gcc4.tar.gz
[root@bogon ~]#
tar xzvf linux-0.11-060618-gcc4.tar.gz
[root@bogon ~]# mv
linux
linux-0.11-060618-gcc4
[root@bogon ~]# cd
linux-0.11-060618-gcc4
[root@bogon linux-0.11-060618-gcc4]# gedit kernel/blk_drv/blk.h
第87行 #elif 语法错误,改为#else 便可
[root@bogon linux-0.11-060618-gcc4]# gedit Makefile
第14行 CFLAGS =-Wall -O2 -fomit-frame-pointer ,
改为 CFLAGS =-Wall -O -g -fomit-frame-pointer
[root@bogon linux-0.11-060618-gcc4]# make
++++++++++++++++++++++++++++++++++++++++++下面不用
2. 编译带调试信息的Linux 0.11内核
[root@bogon ~]# wget
http://www.kernel.org/pub/linux/kernel/Historic/old-versions/linux-0.11.tar.gz
[root@bogon ~]#
tar xzvf linux-0.11.tar.gz
[root@bogon ~]# cd linux-0.11
[root@bogon linux-0.11]# gedit Makefile
更改 RAMDISK = #-DRAMDISK=512为 RAMDISK = -DRAMDISK=2048
更改 ROOT_DEV=/dev/hd6 为ROOT_DEV=FLOPPY
将源码目录(
linux-0.11)下所有的Makefile进行修改,如下:
LDFLAGS = -M -x //去掉-s标志
CFLAGS = Wall -O -g -fstrength-reduce -fomit-frame-pointer -fcombine-regs //添加-g标志,去掉-mstring-insns
将boot/bootsect.s和tools/build.c中的SYSSIZE的值改为0x8000
由于Makefile文件较多,这里我写了一个脚本程序adjust_make_for_gdb直接完成上述工作
[root@bogon linux-0.11]# gedit adjust_make_for_gdb.sh
#!/bin/sh
sed -i '5 s/#//' Makefile
sed -i '5 s/512/2048/' Makefile
sed -i '23 s/\/dev\/hd6/FLOPPY/' Makefile
sed -i '6 s/3/8/' boot/bootsect.s
sed -i '35 s/2/8/' tools/build.c
find . -name 'Makefile' |while read filename;do
all_lines=$(grep LDFLAGS $filename -nH | awk -F: '{print $2}')
first_line=$(echo $all_lines|awk '{print $1}')
echo $first_line
sed -i "$first_line s/-s//g" $filename
all_lines=$(grep CFLAGS $filename -nH | awk -F: '{print $2}')
first_line=$(echo $all_lines|awk '{print $1}')
echo $first_line
sed -i "$first_line s/-O -fs/-O -g -fs/g" $filename
sed -i '1,$ s/-mstring-insns//g' $filename
done
[root@bogon linux-0.11]# chmod +x adjust_make_for_gdb.sh //将此脚本放在linux-0.11目录下,执行一遍即可.
[root@bogon linux-0.11]# ./adjust_make_for_gdb.sh[root@bogon linux-0.11]# cd ..
[root@bogon bochs]# tar czvf gdb-linux-0.11.tar.gz linux-0.11 //执行完,打包此源码.
glfw安装 centos
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:python 参数没类型
下一篇:python 嵩天 PIL
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
CentOS安装DataX
datax安装
datax -
OpenCASCADE GLFW IMGUI
opencascade glfw imgui
OpenCascade IMGUI 控件 跨平台 Qt -
OpenGL之GLFW入门学习
本学期开设了计算机图形学
#include 初始化 关闭窗口 -
搭建opengl GLFW GLAD环境
win7
opengl glfw #include .net 项目文件 -
Qt配置glfw库(Windows)
将下载的glfw库文件夹中的include、lib-mingw-w64复制到新建的。切换到工程文件(*.pro),鼠标右键–>【添加库】在工程路径下新建一个文件夹。
qt windows OpenGL Qt 工程文件 -
GLFW库glfwCreateWindow总是失败
前言一个很简单的代码:opengl设置窗口背景颜色#include "glew/glew.h"#include "glfw
openGL设置背景色 glew使用 glfw使用 #include c++ -
openGL使用GLFW、GLEW库绘制点
前言openGL使用GLFW、GLEW库绘制点,下面这段代码:绘制蓝色背景,中心点是一个黄色的点,由于代码0
OpenGL绘制点 GLFW GLEW 着色器 #include -
ubuntu编译glfw3
下载代码: 安装依赖: 执行构建: :
linux git bash 其他 -
「OpenGL」关于编译glfw的坑坑 OpenGL 工程文件 官网 解决方案
-
python 分词副词被删除
Python jieba分词如何添加自定义词和去除不需要长尾词作者:虚坏叔叔
python 分词副词被删除 python word 开发语言 Python