- 浏览: 12901 次
最新评论
在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 PowerShell 2.0语言开发之脚本签名
2012-01-20 09:31 673Windows PowerShell 2.0语言开 ... -
接触Windows Phone7
2012-01-20 09:31 669接触Windows Phone7 2011年03月29日 ... -
windows下制作PHP扩展
2012-01-20 09:31 773windows下制作PHP扩展 2011年01月26日 ... -
VS2008开发Windows Mobile6环境搭建及模拟器联网问题图解
2012-01-20 09:31 837VS2008开发Windows Mobile6环 ... -
别让印象骗了你、、、
2012-01-19 14:33 547别让印象骗了你、、、 2011年12月16日 “第一印象 ... -
《诗经??国风??秦风》
2012-01-19 14:33 507《诗经??国风??秦风》 2011年12月21日 蒹 ... -
解读北京天坛建筑文化
2012-01-19 14:33 524解读北京天坛建筑文化 2011年12月24日 北京天坛 ... -
【转】 Flex远程调用机制RemoteObject应用技巧
2012-01-17 04:20 707【转】 Flex远程调用机 ... -
AS3.0 中root和parent的用法
2012-01-17 04:20 709AS3.0 中root和parent的用法 2011年01月 ... -
Flex 4中DropDownList的奇怪问题
2012-01-17 04:20 1137Flex 4中DropDownList的奇怪问题 2011年 ... -
关于用getDefinitionByName反射创建一个类实例的问题
2012-01-17 04:20 896关于用getDefinitionByName反射创建一个类实例 ... -
javascript中的面向对象编程(一)-乾蓝洛-博客园
2012-01-17 04:20 588javascript中的面向对象编程(一)-乾蓝洛-博客园 ... -
现代女性吸引人的气质
2012-01-16 03:10 654现代女性吸引人的气质 ... -
读懂――狮子座女性
2012-01-16 03:09 833读懂――狮子座女性 20 ... -
(转)《重庆女性特质调查报告》出炉 漂亮能干泼辣排前三
2012-01-16 03:09 513(转)《重庆女性特质调 ... -
女人词汇
2012-01-16 03:09 550女人词汇 2010年04月06日 形容女人的词语大全 ... -
沟通11-如何更有效的赞美别人
2012-01-16 03:09 485沟通11-如何更有效的赞 ...
相关推荐
在最后,要感谢《自己动手写操作系统》的作者于渊,其实我也是先将原先只能在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调试
mingw32编译的在windows上运行arm和mips架构的gdb,方便在windows上远程调试单板上的gdbserver
Linux下的简单C程序gcc编译、gdb调试。
就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:...采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。
minGW是许多C/C++开发者使用的C++编译环境,包含gcc、g++、gdb等编译调试工具。
arm板gdb交叉编译调试工具,内含源码及说明文档,附ncurse库源码编译安装,可直接使用
编译安装gdb+insight和gdbserver远程调试
用Eclipse和GDB构建ARM交叉编译和在线调试环境,很详细,可以参考
1.在inter平台编译arm目标版gdb 2.编译过程中源码做过修改,涉及到线程创建和调度,使用arm工具链提供的接口 3.基于gdb7.5源码修改,已成功运行于开发板上 4.版本包中提供本人总结的编译说明,按照编译说明来编译...
用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常...
Linux 程序编译调试方法 Linux 程序编译调试方法
GDB 在arm开发板上的远程调试 GDB 在arm开发板上的远程调试 GDB 在arm开发板上的远程调试 GDB 在arm开发板上的远程调试
gdb用来调试程序,分析程序的重要工具,海思HIxx是华为海思芯片推出的一些列用于开发IPC、NVR、XVR、DVR的视频...在进行软件开发过程中不免出现各种个样的bug,gdb-arm-hisiv400-linux )则是用来调试、分析bug的利器。
适用于 使用gdbserver + adb转发 + gdb在windows中调试 文
windows gdb 可视化 调试 insight mingw 1 运行wish84 2 在wish84的console中运行insight
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序