用QEMU来调试内核 -- 道听途说篇

在KernelNewbies列表上呆了两年了,问过几个问题,回答过几个问题,更多地是看高手对话,偷偷学艺。这几天人们在列表上谈论了如何QEMU调试内核的话题,我自己试了试,发现比用VMware调试强大很多(使用VMware调试内核请看之前文章):

  • 简单、轻便,通过命令参数指定内核
  • 编译出内核即能调试,不需要应用层
  • 能调试诸多硬件平台(ARM/MIPS等等)

下面是我从邮件中整理出的具体步骤,部分亲测。

Linux如何分配页

是的,在这里记录alloc_pages相关的内容!先来看看我们怎么使用它的。alloc_pages函数族为我们分配2^n个页(准确讲是页框,即4K大小的物理内存),然后返回页描述符(描述页框状态的数据结构,struct page)。可是我们申请内存,是为了使用内存。使用内存时,寻址用的是线性地址。alloc_pages返回的描述页框数据结构实例的地址,并没有什么直接用途。我们要把页描述符描述的物理页框的物理地址转换成线性地址,才能被内核使用。为了完成这个“映射”任务,我们调用kmap函数族,最终获得了4K线性内存空间的首地址。

如何优雅地使用iPad阅读源代码

“Read the fucking source code! “
– Linus Torvalds

如何优雅地使用iPad阅读源代码?答案很简单呐!只要花50大洋买一套国人开发的CodeNavigator付费版就好了。作为代码阅读工具至少有两个handy的功能吧:语法高亮和代码跳转。CodeNavigator提供的注释功能可以写写笔记也很贴心!并且,CodeNavigator还支持git的整合(反正能想到的功能和不需要的功能人家都做好了)。作为比较,AppStrore里我所检索到的其他工具,大部分仅支持语法高亮。