自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 ftrace的使用

This article explains how to set up ftrace and be able to understand how to trace functions. It should be useful for current kernel developers and device driver developers who want to debug kernel i

2015-07-31 18:08:59 587

转载 使用 ftrace 调试 Linux 内核,第 3 部分

ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第三部分,通过示例代码介绍如何在代码中使用 ftrace 提供的工具函数,以与 ftrace 交互。通过本文的讲解,读者可以在实际代码中使用 ftrace,方便了调试和分析 

2015-07-31 18:06:32 401

转载 使用 ftrace 调试 Linux 内核,第 2 部分

ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第二部分,通过示例介绍了如何使用 ftrace 中的跟踪器,并对不同格式的跟踪信息进行了描述,同时还对如何使用 ftrace 调试指定内核模块进行了介绍。通过对本文的学习,读者可以了解如何

2015-07-31 18:04:38 320

转载 使用 ftrace 调试 Linux 内核,第 1 部分

ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第一部分,介绍了内核相关的编译选项、用户态访问 ftrace 的接口、ftrace 的数据文件,并对 ftrace 提供的跟踪器的用途进行了介绍,以使读者更好的了解和使用该工具。

2015-07-31 18:00:54 513

转载 深入探索 Kdump,第 3 部分: Kdump 原理探秘

Kdump 实现的基本原理Kdump 的实现可以分为两个部分:内核和用户工具。内核提供机制,用户工具在这些机制上实现各种转储策略。内核机制对用户工具的接口是一个系统调用:kexec_load(),它被用于加载捕获内核和传递一些相关信息。捕获内核启动后,会像一般内核一样,去运行为它创建的 ramdisk 上的 init 程序。而各种转储机制都可以事先在 init 中实现。为了在生产内核崩溃时

2015-07-30 14:55:33 1021

转载 深入探索 Kdump,第 2 部分: Kdump 图形化配置工具

引言众所周知,RHEL 和 SUSE 是当今比较主流的两大企业版 Linux,尤其在云计算服务器领域内锦上添花。对于界面用户,相对枯燥的 kdump 命令行终端配置文件,他们更加需要看到一个简单便捷的图形配置工具作为绝技杀手锏。下面以 IBM Power 架构和 RHEL6.2、SLES11SP2 系统为例,讲解这种图形工具分别是如何使界面用户操作方便、简单明了。RHEL6.2 介绍 sy

2015-07-30 14:52:41 893

转载 深入探索 Kdump,第 4 部分: kdump 的亲密战友 crash

简介: crash 是目前广泛使用的 linux 内核崩溃转储文件的分析工具,掌握 crash 的使用技巧,对于分析定位内核崩溃的问题,有着非常重要的作用。本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几个实际工作中遇到的真实案例向读者展示了 crash 的强大功能。在这篇文章中,既有详细的工具

2015-07-30 14:47:52 830

转载 Linux 如何使用gdb 查看core堆栈信息

core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的。调试的话输入: gdb filename core  filename就是产生core文件的可执行文件,core就是产生的dump文件查看栈信息—————当程序被停住了,你需要做的第一件事就是查看

2015-07-29 20:22:40 703

转载 Android平台使用GDBServer 调试Native C代码

最近在Android Native C开发过程中,需要调试代码。之前利用GDBServer在嵌入式平台调试过代码。而Android 下的Native C程序,其实从实质上来说,和嵌入式平台的C代码等级相同(他们都是嵌入式平台下,Linux代码,均为ELF格式,只是C库不同而已)。 所以理论上,使用NDB提供的GDB和GDBServer就可以正常调试代码。0. 程序位置:

2015-07-29 20:22:25 688

转载 利用 SysRq 键排除和诊断系统故障

本文从一次典型的系统挂起事件,引出 SysRq 键的用途。然后介绍了如何启用 SysRq,以及使用 SysRq 的两种方式。接着通过 SysRq 在不同场合的用途分别介绍了各个功能键的使用,并对每个功能键的样例输出做了简单分析。最后,笔者从自身角度对 SysRq 功能做了一个简单的评价,并提供了一部分参考资料,以便读者进一步了解 SysRq 。本文所有操作实例均在 RHEL5u2 x86/ke

2015-07-27 17:39:58 2508

转载 linux kernel 之 工作队列

1. 什么是workqueueLinux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.工作队列(workqueue)是另外一种将工作推后执行的形式.工

2015-07-21 17:02:47 2397

转载 Linux中断(interrupt)子系统之五:软件中断(softIRQ)

软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/*******************************************************************************

2015-07-17 16:57:06 366

转载 Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层

在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc

2015-07-17 16:56:03 362

转载 Linux中断(interrupt)子系统之三:中断流控处理层

1.  中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同

2015-07-17 16:55:04 595

转载 Linux中断(interrupt)子系统之二:arch相关的硬件封装层

Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;

2015-07-17 16:53:58 667

转载 Linux中断(interrupt)子系统之一:中断系统基本原理

这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变。 /****************************************************

2015-07-17 16:52:20 501

原创 笔记之:log Debug开关

打印log是一种常用Debug手段,但是繁多的log会影响系统的性能,为了方便对log的管理,可以采用“log Debug开关”的书写方式。#define ZZL_DB "zzl:"#define ZZL_DEBUG#ifdef ZZL_DEBUG#define zzl_printk(fmt, arg...) printk(ZZL_DB fmt, ##arg)#else

2015-07-17 14:41:56 1343

转载 内核线程

在linux内核中,所谓的内核线程实际上是一个共享父进程地址空间的进程,它有自己的系统堆栈;所以它们依然是一个进程,只不过这些进程可以与其他进程共享某些资源,这里的其他进程也是所谓的线程。1 内核线程与普通进程的异同 1.1 内核线程没有自己的地址空间,所以它们的"current->mm"都是空的; 1.2 内核线程只能在内核空间操作,不能与用户空间交互; 1.3 跟普通进程一

2015-07-17 14:19:26 451

转载 linux内核中等待队列(wait_event,wake_up...)

根据内核3.1.6版本源码、书籍和网上资料,对几个函数进行分析       介绍这几个函数,不得不先介绍等待队列wait_queue_head_t       等待队列用于使得进程等待某一特定事件的发生,无需频繁的轮询,进程在等待周期中睡眠,当时间发生后由内核自动唤醒。等待队列       (一)数据结构       等待队列结构如下,因为每个等待队列都可以

2015-07-17 14:16:48 620

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除