LDD读书笔记——调试技术

本章主要分为四个部分:通过日志(打印)调试,通过proc(查询)调试,通过strace(监视)调试以及通过kgdb调试。kgdb简单看了下,没动手,感觉作用不是很大,如果以后有需要再回头看。先按章节来总结。


通过日志调试

       p83页上开户/关闭调试信息的宏的技巧不错,加至了实验代码。 这节可以总结的东西很少,不过,还是遗留下了一个问题——klogd无法安装。由于起初想把debug级的信息也能记录在messages文件中(也只有debug这一级不能记录),但似乎必须在syslogd和klogd同时运行时才可以,关于书中说的echo 8>/proc/sys/kernel/printk或者rsyslog -c 8都无法解决问题,而在安装klogd的RPM包却提示:failed dependencies: rsyslogd conflicts with klogd,怀疑可能还是版本问题,不过花了不少时间,不想再深究,就把这个问题搁浅了。


通过proc调试

        对proc文件系统的理解

        /proc文件系统是内核用来向进程发送信息的接口,是个虚拟在内存中的文件系统,“存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态”。其中比较重要的有:在/proc目录下有一系列数字编号的文件。每个实际上都是一个目录,表示系统中的一个进程。而在这些进程目录下,又有fd目录,status文件等重要的用于查询进程状态信息。具体的可以参考:深入理解linux系统下proc文件系统内容


       创建proc文件

       通过create_proc_read_entry创建proc文件,其中有个参数为与该文件绑写的callback函数,这个callback函数负责完成读该proc文件需显示的内容。该callback的原型为:

       int read_callback(char *buf, char **start, off_t offset, int count, int *eof, void *data);

       虽然在实验中已经按书中的代码实现proc功能,但对此接口的几个接口还是很不理解,尤其对start和offset究竟有什么作用以及87页最后一段,作者谈到的连续read调用会出现ASCII变化的例子,搞不懂,为什么会出现这种问题?为什么把*start设为一个小整数值就可以了?想过一段时间,想不明白,网上关于Proc的文章大多关于proc文件系统的理解,没有找到关于这方面的文章,当然这个问题可能也不是很重要,就pass了。

      

      seq_file接口

      感觉seq_file与proc的区别只是在实现上,在面对用户时,基本是相同的,当然因为seq_file使用file_operations结构,它能提供的功能肯定会比proc更多。在实现过程中,seq_file按书所说的,有个重要的迭代器对象——void *v, 即由start创建,为next, stop, show所使用的一个指针,但可惜的是书中的例程压根没用它,对于这个代替器究竟是何种用处,我没有深究。总之,seq_file作为proc的升级版,其原理与seq_file是相同的,只是实现上有点小差异。


通过监视调试

      这里主要谈到两个重要的工具吧,strace和oops,其实在内核出现错误时,都会调用这两者打印信息到messages中,只需要看懂他们的调试信息即可。需要注意的是strace给出的系统调用信息是最近的系统调用,而不是函数的调用关系。

      内存模型

       书中在此处谈到了内存模型,提到0xc000 0000以上的线性空间是内核栈空间,以下的是用户栈空间,起初不理解,虽然知道linux32位的线性空间分配1g给内核,3g给用户,但一直以为是开头的1g空间是内核区,之后的3g是用户区,因为开头的地址中存放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值