读书笔记(chapter18)
调试
18.1准备开始
18.2内核中的bug
1.从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触发的
18.3通过打印来调试
1.健壮性
健壮性是printk()函数最容易让人们接受 一个特质;而且调用者连锁都不必使用
核心硬件部分的黑客依靠此时能够工作的硬件设备与外界通信;绝大部分人对此都不会感兴趣的。
2.日志等级
printk()与printf()最主要区别的就是前者可以指定一个日志级别。内核根据一个级别来判断是否在终端上打印消息
现在默认等级是kern_warning。由于这个默认值将来存在变化的可能性,所以还是应该给自己的消息指定一个记录等级。
3.记录缓冲区
而环形缓冲区的唯一缺点——可能会丢失消息,但是与简单性与健康性的好处相比,这点代价是值得的;
4.syslogd和klogd
在启动klogd的时候,可以通过指定 -c标志来改变终端的记录等级
5.从printf()到printk()的转换
18.4oops
如果oops在中断上下文时,内核根本无法继续,会陷并入混乱。如果oops在idle进程(pid为0)或者init进程(pid为1),结果同样的系统陷入混乱,因为内核缺了这两个重要的进程根本无法工作;内核会杀死该进程并尝试着继续执行
1.ksymoops oops可以说是一个经过解码的oops,内存地址都转换成了它们对应的函数,这需要调用ksymoops命令,并且还必须提供编译内核时产生的system.map
ksymoop saved_opps.txt
2.kallsyms
现场已经无须使用ksymoops工具了,开发版的2.5版内内核引入了kallsyms特性,它可以通过定义于config_kallsyms配置选项启用;
18.5
最有用的一个是sleep-inside-spinlock checking(自旋锁内睡眠选项),这些选项确实能完成不少调试工作.
内核提供一个原子操作计数器。它可以被配置成一旦在原子操作过程中进程进入睡眠或者一些可能引起睡眠的操作。这种调试方法捕获了大量bug
18.6
1.内核调用最常用的是bug()和bug_on();当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。这些声明会导致oops跟硬件的体系结构是相关的。可以用panic()引发更严重的错误;只需要在终端上打印一下栈的回溯信息来帮助调试;
18.7
1.当该功能被启用的时候,无论内核处于什么状态,都可以通过特殊的组合键跟内核进行通信。
2.输入sysrq-h获取一份可用的选项列表;sysrq-u卸载所有的文件系统,sysrq-b重启设备;
18.8
1.gdb(有很多局限性)
gdb_vmlinux /proc/kcore
2.kgdb
18.9
1用UID作为选择条件
2使用条件变量
3使用统计量
4重复频率限制
18.10
1.使用git二分搜索
2.从记录日志到git二分查找法.
读书笔记(chapter18)的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- LOMA280保险原理读书笔记
LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记2
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记1
<3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and ...
- 《More Effective C#》读书笔记
<More Effective C#>这本书,大概是四年前看完的,但只整理了一部分读书笔记,后面有时间的话,会陆续补充的. More Effective C# :使用泛型 More Eff ...
随机推荐
- ntp时间服务器--Linux配置
时间服务器作用: 大数据产生与处理系统是各种计算设备集群的,计算设备将统一.同步的标准时间用于记录各种事件发生时序, 如E-MAIL信息.文件创建和访问时间.数据库处理时间等. 大数据系统内不同 ...
- VS2013自带报表+打印功能
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010773667/article/details/27540389 经过了VB版机房收费系统的学习 ...
- 2.HBase In Action 第一章-HBase简介(1.1数据管理系统:快速学习)
Relational database systems have been around for a few decades and have been hugely successful in so ...
- Django使用静态文件
除了由服务器生成的HTML文件外,网页应用一般需要提供其它必要的文件 —— 比如图片文件.JavaScript脚本和CSS样式表 —— 来为用户呈现出一个完整的网站. 在Django中,我们将这些文件 ...
- 魔法少女【动态规划问题】——NYOJ1204
个人博客页:https://www.scriptboy.cn/202.html 题目描述: 前些时间虚渊玄的巨献小圆着实火了一把. 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙 ...
- Python os.walk() 方法
#coding=utf-8 import os #(dirpath, dirnames, filenames)[文件夹路径, 文件夹名字, 文件名] def file_name(file_dir): ...
- OpenCV——反向投影(定位模板图像在输入图像中的位置)
反向投影: #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namesp ...
- JAVA框架 Spring AOP注解
一.准备工作: 1)导入jar包: 4个jar包. 2)约束:(spring需要所有的约束)有IOC约束和AOP 还有事务(tx)以及注解注入的约束(context). <?xml versio ...
- uC/OS-III 时钟节拍,时间管理,时间片调度
uC/OS-III 时钟节拍,时间管理,时间片调度 时钟节拍 时钟节拍可谓是 uC/OS 操作系统的心脏,它若不跳动,整个系统都将会瘫痪. 时钟节拍就是操作系统的时基,操作系统要实现时间上的管理, ...
- 20155338《网络对抗》Exp3 免杀原理与实践
20155338<网络对抗>Exp3 免杀原理与实践 实验过程 一.免杀效果参考基准 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.v ...