Pintos调试心得.docx_第1页
Pintos调试心得.docx_第2页
Pintos调试心得.docx_第3页
Pintos调试心得.docx_第4页
Pintos调试心得.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Pintos调试心得一、 如何用GDB调试内核:Ctrl+Alt+F1打开终端,cd切换到你的pintos/src/threads/build目录下输入命令pintos gdb run alarm-multiple(注意是双线- -,注意run前的空格)出现下面的界面:(注意uilts文件下已经编译通过,还有bochs打开终端调试)然后,Ctrl+Alt+F2打开第二个终端登录并切换到pintos/src/threads/build目录下输入命令pintos-gdb -tui看到如下界面:按enter键继续,此时为进入gdb调试控制台输入命令target remote localhost:1234(默认端口,应该与第一个终端里显示的一致)接着输入命令file kernel.o(载入要调试的内核程序),看到如下界面:输入y继续,这样开始调试啦(首先自己在网上百度一下gdb常用的调试命令)break main(在main函数入口插入断点)接着c(continue的意思跟VS、VC+中的调试命令对应)看到如下界面注意划红线部分输入n(执行下一步,不会进入函数体内部,step单步运行命令会进入函数内部)然后大家可以在第一个终端里查看运行结果。比如我在第79行添加了一行Ctrl+Alt+F1打开第一个终端可以看到执行结果接下来自己慢慢探索吧,感受一下gdb调试器的强大之处。下面介绍一下我对pintos的理解二、 Pintos内部函数调用内核加载完成后,进入main函数(pintos主程序)开始bootbss_init (); 初始化BSS,(BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。)argv = read_command_line ();/读取命令行argv = parse_options (argv);/分析命令行thread_init ();初始化主线程console_init ();/* 问候用户 */printf (Pintos booting with %PRIu32 kB RAM.n,init_ram_pages * PGSIZE / 1024);在终端打印/* 初始化内存系统*/palloc_init (user_page_limit);malloc_init ();paging_init ();/*初始化中断处理 */intr_init ();timer_init ();kbd_init ();input_init ();/* 开启线程调度,开启中断*/thread_start ();/创建idle空线程serial_init_queue ();timer_calibrate ();printf (Boot complete.n);/开机完成/* 运行内核命令行*/run_actions (argv);/这个函数会调用struct action a;中的方法/让我们进入a-function(argv),看到其调用run_task()函数,找到struct action的定义/自己查看一下/接着我们进入run_test()函数,看到其是tests.c中的,其调用结构体struct test中的/function()方法/进入该函数后我们已经接近alarm-multiple的真相了,看到test_sleep(5,7)它传入就是/的参数含义就是创建5个线程每个线程sleep迭代7次,这样我们就看到了运行结果/所显示的/进入test_sleep(5,7)然后我们在timer_sleep()处设置断点就可以观察到该函数被不断调/用/*然后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论