博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 内核测试和调试(5)
阅读量:6910 次
发布时间:2019-06-27

本文共 2000 字,大约阅读时间需要 6 分钟。

Linux 内核测试和调试(5)

仿真环境下进行 Linux 电源管理子系统测试

Linux 电源管理子系统在仿真环境下提供5种测试方式。这些方式仅仅在内核各层之间运行休眠的代码而不是真正的让系统进入休眠状态。有些平台不能挂起系统,比如说我们需要模拟飞机的飞行环境,这时候使用这种仿真环境就非常有用处了。

freezer - 测试停掉处理器:

 
  1. echo freezer > /sys/power/pm_test
  2. echo platform > /sys/power/disk
  3. echo disk > /sys/power/state

devices - 测试停掉处理器以及挂起设备:

 
  1. echo devices > /sys/power/pm_test
  2. echo platform > /sys/power/disk
  3. echo disk > /sys/power/state

platform - 测试停掉处理器、挂起设备以及平台全局控制方法(*)

 
  1. echo platform > /sys/power/pm_test
  2. echo platform > /sys/power/disk
  3. echo disk > /sys/power/state

processors - 测试停掉处理器、挂起设备和平台全局控制方法(*),以及关闭未启动的 CPU。

 
  1. echo processors > /sys/power/pm_test
  2. echo platform > /sys/power/disk
  3. echo disk > /sys/power/state

core - 测试停掉处理器、挂起设备和平台全局控制方法(*),关闭未启动的 CPU,以及挂起平台或系统的设备。注意:这个测试模式运行在 ACPI 系统。

 
  1. echo core > /sys/power/pm_test
  2. echo platform > /sys/power/disk
  3. echo disk > /sys/power/state

Linux 电源管理子系统追踪事件

电源管理子系统在运行过程中支持多种追踪点和追踪事件。我将对如何使用这些追踪时间以及如何找到追踪信息作一个简单的介绍:

在运行时开启电源管理事件:

 
  1. cd /sys/kernel/debug/tracing/events/power
  2. echo 1 > cpu_frequency/enable
  3. cat /sys/kernel/debug/tracing/set_event
  4. less /sys/kernel/debug/tracing/trace

为内核启动的命令添加一个参数:

 
  1. trace_event=cpu_frequency

更多信息查看 Documentation/power/basic-pm-debugging.txt 以及同目录下其他的文档。

git bisect 命令

git bisect 是一个非常有用非常强大的工具,用于将 git 上的一个 commit 分离出来。我简单过一遍它的用法。

下面是 git bisect 的用法:

 
  1. git bisect start
  2. git bisect bad # 当前版本是坏的
  3. git bisect good v3.14-rc6 # 上个版本是好的

一旦指定好好的版本和坏的版本,git bisect 就会开始把好坏两个版本之间的所有 commit 对半分,并将其中的一半提交 pull 下来。然后重新编译安装测试内核,并标记这个内核是好是坏。重复这个过程,知道某个你选好的 commit 被标记被好或者坏。我们可能需要测试多个内核版本,测到最后一个版本时,git bisect 会将一个 commit 标记为坏。下面的命令可以在 git bisect 分析过程中起到帮助作用:

查看 bisect 操作的过程:

 
  1. git bisect log

重置 git bisect,标记错误时可以用到,保存 git log 的输出,重新操作上一次 bisect 的步骤:

 
  1. git bisect reset

重放 git bisect 操作过程:

 
  1. git bisect replay git_log_output

如果一个问题很清楚是在某个区域内,git bisect 命令可以定位到一个具体的内核源码树枝干上。举个例子,在调试一个镭龙显卡驱动的问题时,为 git bisect 指定 drivers/drm/radeon 参数,可以让 git bisect 只检索对 drivers/drm/radeon 里面的文件有修改的 commit。

让 git bisect 只检索内核树的某个枝干:

 
  1. git bisect start drivers/drm/radeon
原文发布时间:2014-08-27
本文来自云栖合作伙伴“linux中国”

转载地址:http://txbcl.baihongyu.com/

你可能感兴趣的文章
spring cloud+docker+jenkins 自动化构建(2)
查看>>
iOS核心动画笔记3-视觉效果
查看>>
Ubuntu17 Jdk8 Tomcat64位环境搭建
查看>>
程序员也可以设计高大尚的xmind思维导图
查看>>
#生活琐事# 关于元宵节,红茶童鞋的记事
查看>>
OSChina 娱乐弹弹弹——程序猿眼中的女人
查看>>
OSChina 周二乱弹 —— 世界这么大,老板想让你去看看
查看>>
OSChina 周日乱弹 ——缘小小断腿记
查看>>
OSChina 周五乱弹 ——遇到这事是得抽根烟冷静一下!
查看>>
OSChina 周五乱弹 —— 动弹的起源
查看>>
Android BaseAdapter使用介绍
查看>>
react 使用 fetch 向spring mvc后台发起ajax 请求 options 403
查看>>
Android_TextSwitcher和ImageSwitcher
查看>>
五,JavaWeb简略的谈下前端技术<二>CSS层叠样式表
查看>>
LinkedBlockingQueue源码学习笔记
查看>>
SolrCloud 6.6.2 之 Collection API
查看>>
运用Oltu框架搭建OAuth的Demo工程
查看>>
优化Android应用内存的若干方法
查看>>
ajax get和post跨域问题解决方法
查看>>
Android库和项目收集
查看>>