linux第十八章学习笔记】的更多相关文章

第十八章 调试 内核级开发的调试工作远比用户级开发艰难,它带来的风险比用户级别更高. 一.准备开始 1. 准备工作需要: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在用户级程序中bug常常表现得清晰(执行foo就会让程序立即产生核心信息转储)但是内核中的bug表现得不像用户级程序中那么清晰.因为内核.用户以及硬件之间的交互很微妙. 3. 调试的主要思想是让bug重现,但是在内核中这并不是很容易做到的.因此,在跟踪bug的时候,掌握的信息越多越好. 二.内核中的bug…
第十八章 调试 [学习时间:1小时 总结博客时间:1小时15分] [学习内容:出现bug的原因.内核调试器gdb.使用Git进行二分查找] 内核级开发的调试工作远比用户级开发艰难,它带来的风险比用户级别更高. 一.准备开始 1. 准备工作需要: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在用户级程序中bug常常表现得清晰(执行foo就会让程序立即产生核心信息转储)但是内核中的bug表现得不像用户级程序中那么清晰.因为内核.用户以及硬件之间的交互很微妙. 3. 调试的主…
第十八章:初识sed和gawk 文本处理 sed编辑器 sed编辑器可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据. 它每次读取一行,用提供的编辑器命令匹配数据.按命令中指定的方式修改流中的数据,然后将生成的数据输出到STDOUT.在流编辑器将所有命令与一行数据进行匹配后,它会读取下一行数据并重复这个过程.在流编辑器处理完流中的所有数据行后,它就会终止.sed命令格式: sed options script file sed命令选项 选项 描述 -e script 在处…
第十八章 调试 0.总结 oops 内核的调试配置 用Git进行二分搜索 bug总会有,简洁描述发给LKML 1. 准备开始 在用户级的程序里,bug表现比较直接:在内核中却不清晰. 2. 内核中的bug 多种多样.变化多端. 引用空指针会产生一个oops:垃圾数据会导致系统崩溃. 定时限制和竞争条件都允许多个线程在内核中同时运行产生的结果. 3. 通过打印来调试 3.1 健壮性 printk()函数任何时候地方都可以调用它. 3.2 日志等级 printk()可以指定一个日志级别[与print…
调  试 一.准备开始 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 知道这个bug最早出现在哪个内核版本中. 1.想要成功进行调试: 让这些错误重现 抽象出问题 从代码中搜索 二.内核中的bug 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触发的.内核确实有一些独特的问题需要考虑,像定时限制和竞争条件等,它们都是允许多个线程在内核中同时运行产生的结果. 三.通过打印来调试 内核提供的打印函数printk()和C 库提供的printf(…
概述:调试工作艰难是内核级开发区别于用户级开发的一个显著特点 18.1准备开始 内核调试往往是一个令人挠头不已的漫长过程.幸运的是,在这些费劲的问题中也有不少比较简单而且容易消灭的小bug,运气好你可能面对的是些简单的小bug. 开始做―些调查之前,不会清楚到底面对的是什么现在,需要的只是: 一个bug.听起来很可笑,但确实需要一个确定的bug.如果错误总是能够重现的话,那对我们会有很大的帮助(有一部分错误确实如此).然而不幸的是,大部分bug通常都不是行为可靠而且定义明确的. 一个藏匿bug的…
<Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一些资深的特殊功能 健壮性 在任何时候内核的任何地方都能调用printk()函数,只有在终端还未初始化的时候不能调用. 在中断上下文和进程上下文中被调用 在任何持有锁时被调用 在多处理器上同时被调用,并且不必使用锁. 解决办法是提供一个变体函数early _ printk(),但这种办法在某些硬件体系结构上无法…
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例: $ man ls 查看ls命令的帮助信息 $ man services 查看配置文件services的帮助信息 man 1 默认命令 5配置文件 二: 指令名称:info 指令英文原义:information 指令所在路径:/usr/bin/info 执行权限:All User 语法:i…
Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应用程序,但是这样就没有办法将流程和实现分开了,你会发现流程的定义分散在组成流程的各个元素中,没有地方能够完整地描述整个流程.Spring Web Flow是Spring MVC的扩展,它支持开发基于流程的应用程序.它将流程的定义与实现流程行为的类和视图分离开来. 在Spring中配置Web Flow…
第十八章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点. 18.1 准备开始 我们需要什么? 一个bug 一个藏匿bug的内核版本 思路:假定能够让bug重现 在用户级程序中,bug直截了当.在内核中,bug不是那么清晰. 18.2 内核中的bug 往往要经历一系列的连锁反应才可能触发 需要考虑的问题:定时限制.竞争条件,它们都是运行多个线程在内核中同时运行产生的结果 18.3 通过打印来调试 Printk():内核的格式化打印函数 18.3.1 健壮性 任何时候,任何地方都可以…