在windows下编译生成支持gdb stub的bochs以方便我的操作系统uwos调试
2010年06月14日
转载请注明作者:upwardit
忙了一晚上,终于成功了,早上六点了,先写个题目.现在要睡觉了,以后再详细叙述.
......
看到linux上,在bochs上可以用gdb远程调试操作系统内核.而在windows上,直接下载安装的bochs,GDB Stub Options里的Enable GDB stub灰色,不可用.这样用C写的内核调试起来,很不方便.本人只有上网找了,包括外国网站,全是linux上的,没发现windows上的.本人不习惯linux上的编辑器,尽管这些编辑器很好用,一点不比windows上的差.没有办法,只能自己想办法解决了.
试着将gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0加入到bochsrc.bsrc里.运行bochs提示不支持GDB stub.没办法,只有下载bochs源码,自己编译了.最初用VC2005的nmake编译源码里自带的MakeFile.可以生成bochs,但没有gdb stub.后来在linux上生成了带gdb stub的MakeFile.比较合并了两个MakeFile,用nmake编译不成功.又失败了.
看到源码里有不仅有.conf.win32-vcpp还有.conf.win32-cygwin,在.conf.win32-cygwin里加上"--enable-gdb-stub \"(注:没有引号)将--with-nogui删掉,哈哈.装cygwin,bin里面有好多与linux命令一样的exe,在windows下可以使用linux命令了,最好将cygwin\bin加到环境变量里,cool.我们使用sh .conf.win32-cygwin生成MakeFile.怎么来编译呢,我们不用vc了.用MinGW,这样就可以用gcc,g++,ld等.哈哈.将MinGW\bin下的mingw32-make,改名为make.然后make MakeFile.可是提示找不到等,没关系cygwin\usr\include里有.编译没问题了,可是link的时候,提示
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized
undefined reference to `__security_cookie'
undefined reference to ` __security_check_cookie 4'
解决方法如下:
如果是VC,这跟GS编译选项有关,SDK的VC++编译器将GS开关打开。并且,在Platform SDK的很多库文件使用"/GS"开关生成的。在VC++中,缓冲区 检查 的代码是放在 C Runtime库中的,这是链接器默认使用的库。但是VC++自带的C Runtime,跟Platform SDK中的C Runtime,是不一样的。bufferoverflowU.lib 一般用户模式 bufferoverflowK.lib 内核模式 bufferoverflow.lib 服务>(注:VC的解决方法为转载)
但是我们用的是MinGW,需要为MinGW设置SDL库,下载SDL-devel-1.2.13-mingw32.tar.gz,否则系统使用的是VC的,就会报上面的错误。
打开MinGW\include,将SDL中include里面的SDL文件夹复制到里面。
然后,回到MinGW\lib的文件夹下,将SDL中lib文件夹下的libSDL.dll.a, libSDL.la和libSDLmain.a三个文件拷贝到MinGW的lib文件夹下。
最后,把SDL中bin文件夹下的SDL.dll文件拷贝到C:\WINDOWS\system32下。也可以将SDL.dll绑定到使用了SDL库编译的*.exe文件所在的文件夹中。
这样链接成功,设置一下GDB stub就可以使用了.
运行bochs显示如下:
Waiting for gdb connection on port 1234
我们运行gdb(需要下载GDB on Windows),键入target remote localhost:1234回车,bochs会显示如下.
Connected to 127.0.0.1
哈哈,成功了.大体过程就是这样,只记得这么多了,文章可能不是很详细,有时间的话,可能会整理一份带图的详细说明.有问题欢迎多多交流,欢迎在不改变文章内容的情况下转载,但请注明作者:upwardit,以尊重本人工作到早上六点的劳动成果,这方便别人,中午边吃饭边写了一个多小时文档的辛苦.关于bochs和gdb使用,就不详细说明了.请各位自己查阅相关资料.
发表评论
-
Windows Installer的简单应用
2012-01-20 00:29 749Windows Installer的简单应 ... -
Windows下的高精度定时器实现及精确时刻获取
2012-01-20 00:29 1311Windows下的高精度定时器实现及精确时刻获取 2010年 ... -
在android 2.3 AVD 模拟器上安装 google market 安卓市场
2012-01-20 00:29 486在android 2.3 AVD 模拟器上安装 google ... -
在android 2.3 AVD 模拟器上安装 google market 安卓市场
2012-01-20 00:29 739在android 2.3 AVD 模拟器上安装 google ... -
三年级如何写作文
2012-01-19 01:26 532三年级如何写作文 2011年10月27日 三年级如何写 ... -
小学生评语大全
2012-01-19 01:26 715小学生评语大全 2011年07月14日 你是一位可爱的小 ... -
小学生期末评语经典大全
2012-01-19 01:26 838小学生期末评语经典大全 2011年12月15日 1.你是 ... -
超级爆笑小学生作文大全,这孩子太搞了
2012-01-19 01:26 565超级爆笑小学生作文大全,这孩子太搞了 2011年11月03日 ... -
VC编译器配置及编译选项
2012-01-19 01:26 594VC编译器配置及编译选 ... -
电脑蓝屏
2012-01-17 00:42 572电脑蓝屏 2011年08月10日 电脑蓝屏7e 8e ... -
DOS初级教程
2012-01-17 00:42 765DOS初级教程 2011年09月04日 D ... -
7月16号 键盘按键失灵? 蓝屏的终极处理?
2012-01-17 00:42 6537月16号 键盘按键失灵? 蓝屏的终极处理? 2011年07 ... -
夜魅-----【索爱刷机必备。刷机控】
2012-01-17 00:42 604夜魅-----【索爱刷机必备。刷机控】 2011年12月31 ... -
小学高段学生主体参与作文批改的策略
2012-01-15 15:04 903小学高段学生主体参与作文批改的策略 2011年04月17日 ... -
何培养小学生作文批改能力
2012-01-15 15:04 674何培养小学生作文批改能力 2010年10月14日 文评改 ... -
作文批改评语
2012-01-15 15:04 536作文批改评语 2010年05 ... -
作文批改评语范例
2012-01-15 15:04 621作文批改评语范例 2011 ...
相关推荐
在最后,要感谢《自己动手写操作系统》的作者于渊,其实我也是先将原先只能在Linux下编译的书里源代码用MinGW移植到Windows下编译的过程中才试着在Windows下编译Linux 0.11源代码的,有了在Windows下编译Linux 0.11...
相信很多朋友对编译安装很头疼,我也是一样,之前在学习操作系统真相还原和linux0.11的时候需要搭建带调试功能的bochs,bochs是一个模拟指令的虚拟机,所以它可以在X86上模拟arm指令,不是像其他虚拟机一样直接将...
利用GDB和Bochs调试内核源代码.txt
gdb-stub.c:FRV GDB stub driver
GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试
就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:...采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。
mingw32编译的在windows上运行arm和mips架构的gdb,方便在windows上远程调试单板上的gdbserver
Linux下的简单C程序gcc编译、gdb调试。
minGW是许多C/C++开发者使用的C++编译环境,包含gcc、g++、gdb等编译调试工具。
编译安装gdb+insight和gdbserver远程调试
arm板gdb交叉编译调试工具,内含源码及说明文档,附ncurse库源码编译安装,可直接使用
1.在inter平台编译arm目标版gdb 2.编译过程中源码做过修改,涉及到线程创建和调度,使用arm工具链提供的接口 3.基于gdb7.5源码修改,已成功运行于开发板上 4.版本包中提供本人总结的编译说明,按照编译说明来编译...
用Eclipse和GDB构建ARM交叉编译和在线调试环境,很详细,可以参考
Linux 程序编译调试方法 Linux 程序编译调试方法
用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常...
gdb用来调试程序,分析程序的重要工具,海思HIxx是华为海思芯片推出的一些列用于开发IPC、NVR、XVR、DVR的视频...在进行软件开发过程中不免出现各种个样的bug,gdb-arm-hisiv400-linux )则是用来调试、分析bug的利器。
适用于 使用gdbserver + adb转发 + gdb在windows中调试 文
GDB 在arm开发板上的远程调试 GDB 在arm开发板上的远程调试 GDB 在arm开发板上的远程调试 GDB 在arm开发板上的远程调试
windows gdb 可视化 调试 insight mingw 1 运行wish84 2 在wish84的console中运行insight
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序