如何突破在写pintos 过程中遇到的问题.docxVIP

如何突破在写pintos 过程中遇到的问题.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何突破在写pintos 过程中遇到的问题

突破写pintos项目中的各种问题在写pintos project中难免会出现很多问题。下面是我总结的一些解决问题的方法:百度谷歌下晚到的问题。看下别人写好的代码,网上有,可以下载。问一下其他人,队友,老师等。以上几个方法都不行的情况下,只能靠自己了。终极方法:调试。没有调试解决不了的问题。下面着重介绍用gdb调试的方法。包括了调试核心代码和用户程序怎么开始调试?打开一个终端, 进入到src/threads/ 或者src/userprog或者src/threas/build 或者src/userprog/build下面默认进入了src/threads/输入:pintos --gdb -- run alarm-multiple请注意:--gbd中 --与gdb之间没有空格; -- run 中--与run 之间必须有空格出现:再打开一个终端:进入到src/threads/build/中输入:pintos-gdbkernel.o出现:输入debugpintos出现:现在就可以调试了,具体怎么用gdb调试程序在网上有很多资料。l -------------------------这是小写L, list列出代码b x ---------------- 在x处设置断点, b--break如 b 10 在第10行设置断点b main 在函数main开始处设置断点b *0x12345 在内存地址0x12345处设置断点b process.c:start_process在process.c文件中的start_process函数入口处设置断点c --------------continue 开始运行到下一个断点处delete ------------- 删除断点p x ---------------显示变量x的值x /20wx 0x7c000 ----------- 显示20个内存地址0x7c000处的值,w-表示显示4字节,x表示用16进制显示q ------------------------quit 退出调试s --------------- step单步进入函数中n ----------------next 跳过函数还有很多……进入第二章后还要调试用户程序,调试方法可以在gdb-macros 中找到。关键在导入用户程序的符号表,这样做:gdbloadusersymbols echo下面演示调试用户程序echo进入src/example/中输入make编译好就ok进入src/userprog/中输入make编译成功进入src/userprog/build/中制作虚拟硬盘pintos-mkdiskfilesys.dsk–filesys-size=2格式化虚拟硬盘filesys.dskpintos–f –q复制../../example/中的echo文件到当前文件夹中cp ../../example/echo echo将echo 放入到虚拟硬盘中pintos -p echo -a echo -- -q开始启动调试打开一个终端,进入到src/userprog/build中输入命令:pintos --gdb -- run echo打开另一个终端,也进入到src/userprog/build/中输入命令:pintos-gdbkernel.o进入gdb界面:gdbdebugpintosgdbloadusersymbols echo此时出现:显然,.text_addr = 0x80480e0就是echo main 函数的入口地址设置断点:gdbb echo.c:main再输入gdbc运行到echo.c的main()函数入口处如下图:OK,接下来就好调试了。。

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档