Linux 内核测试和调试(5)

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中国”

时间: 2025-01-25 09:32:14

Linux 内核测试和调试(5)的相关文章

Linux 内核测试和调试(4)

Linux 内核测试和调试(4) 自动测试工具 这里列出一些能满足不同需求的测试工具供你选择.本小节只是简单介绍个大概,并不提供详细操作指南. AuToTest AuToTest 是一个全自动测试框架,存在的主要目的就是测试 Linux 内核,当然也可以用来测试其他东西,比如测试一块新硬件是否能稳定工作.AuToTest 是开源软件,以 GPL 方式授权,运行于 server-client 架构(即 C/S 架构).你可以通过配置 server 端来对运行了 client 端的系统执行初始化.运

Linux 内核测试与调试(3)

Linux 内核测试与调试(3) 基本测试 安装好内核后,试试能不能启动它.能启动的话,检查 dmesg 看看有没有隐藏的错误.试试下面的功能: 网络(Wifi 或者网线)是否可用? ssh 是否可用? 使用 ssh 远程传输文件. 使用 git clone 和 git pull 命令. 用用网络浏览器. 查看 email. 使用 ftp, wget 等软件下载文件. 播放音频视频文件. 连上 USB 鼠标等设备. 检查内核日志 使用 dmesg 查看隐藏的问题,对于定位新代码带来的 bug 是

Linux 内核的测试和调试(1)

Linux 内核的测试和调试(1) Linux 内核测试哲学 不管是开源还是闭源,所有软件的开发流程中,测试是一个重要的.不可或缺的环节,Linux 内核也不例外.开发人员自测.系统测试.回归测试.压力测试,都有各自不同的目的,但是从更高一个层次上看,这些测试的最终目的又是一样的:保证软件能一直运行下去,当有新功能加进去时,要保证新功能可以正常工作. 在软件释出 release 版之前,不用回归测试就能保证稳定性,并且尽量避免在软件发布后被用户发现 bug.调试被用户发现的 bug 是一项非常浪

十天学Linux内核之第七天---电源开和关时都发生了什么

原文:十天学Linux内核之第七天---电源开和关时都发生了什么 说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差,刚开始可能是新鲜感以及很多读者的鼓励,现在就是想快点完成自己制定的任务,不过总有几个读者给自己鼓励,很欣慰的事情,不多感慨了,加紧时间多多去探索吧,今天要去描述的是电源开和关时都发生了什么,一起去看看吧~~ bootloader引导装入程序将内核映像加载到内存并处理控制权传送到内核后在内核引导时每个子系统都必须要初始化,我们根据实际执行的线性顺序跟踪内核的

Linux 内核的测试和调试(6)

Linux 内核的测试和调试(6) Linux 内核补丁测试 你试过自己写内核补丁吗?本节介绍在把你的补丁包提交到 Linux 邮箱列表之前,需要做哪些操作.另外我们还会介绍如何把它发送出去. 写好代码后,编译它.把 make 过程产生的输出保存到文档中,查看新代码有没有警告信息.找到所有的警告信息,处理掉.当你的代码编译过程没有任何不正常的输出,安装这个内核,然后启动测试.如果启动正常,查看 dmesg 里面有没于错误,与老内核生成的 dmesg 日志做个比较.运行一些压力测试,请参考我们以前

Linux下的内核测试工具——perf使用简介

1.perf的安装 由于我们经常是在自己编译的内核上进行开发工作,这里需要有包含调式信息的内核启动镜像文件vmlinux,在自定义内核的基础之上,进入linux内核源码,linux/tools/perf make make install 提示: 1)可能在编译的时候,有报错大概是由于平台问题,数据类型不匹配,导致所有的warning都被当作error对待:出现这问题的原因是-Werror这个gcc编译选项.只要在makefile中找到包含这个-Werror选项的句子,将-Werror删除,或是

如何测试软件包在不同的linux内核版本上的兼容性?软件包基本上都是开源的,光测试POSIX行吗?

问题描述 如何测试软件包在不同的linux内核版本上的兼容性?软件包基本上都是开源的,光测试POSIX行吗? 客户要求评估用户态软件包在同步内核版本上的兼容性,软件包都是开源的,光测试POSIX可以吗?哪个大神能给些意见? 解决方案 从工程的角度来说,所有受支持的平台环境都要测试. 解决方案二: 都测试一下为好,万一有点不一样了 解决方案三: linux内核版本的迭代,对用户态接口的影响到底会有多大?

使用 ftrace 调试 Linux 内核【转】

转自:http://blog.csdn.net/adaptiver/article/details/7930646 使用 ftrace 调试 Linux 内核,第 1 部分 http://blog.csdn.net/tommy_wxie/article/details/7340701 简介: ftrace 是 Linux 内核中提供的一种调试工具.使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用.本系列文章对 ftrace 进行了介绍,分为三部分.本文

VELT-0.1.5开发:使用kgdb调试Linux内核【转】

转自:http://demo.netfoucs.com/lights_joy/article/details/44106589 VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译,并根据编译时的错误信息正确定位到源码.目前的版本是0.1.4,仅