/PROC 调试

/proc 文件系统——提供一种驱动调试的利器 做了几年的Android驱动开发,最经常碰到的是出问题时,需要实时获取设备的状态,寄存器值,GPIO状态等。或者在开发一个新的设备驱动,由于前期HAL层的代码还没完成,那么通过proc文件系统提供一个调试接口,可以说即简单又便捷。这也一种和内核通信的方式。     经常调试codec,就以提供一个调试codec的接口为例,来说明吧,既然是一种和内核的通信方式,计算机里面涉及到通信的时候,往往需要 阅读详情
 

内核调试的几种方法

 

内核自带的调试开关

 

CONFIG_DEBUG_KERNEL:      打开基本内核调试功能。

CONFIG_DEBUG_SLAB  :      内核进行自动检测内存空间泄露,方法极其暴力。

CONFIG_DEBUG_SPINLOCK:   内核将捕获对未初始化的自选锁的操作。

CONFIG_DEBUG_INFO :      构造包含GDB 调试信息的完整数据。

CONFIG_DEBUG_STACKUSAGE: 检查内核栈是否溢出。

CONFIG_KALLSYMS:         将在内核中包含符号信息,用于调试上下文。

CONFIG_DEBUG_DRIVER:      打开驱动程序核心中的调试问题。

CONFIG_INPUT_EVBUG:       打开输入事件的详细记录。

printk 的八个级别输出

 

KERN_EMERG:用于紧急事件消息

KERN_ALERT:用于立即需要采取动作的情况

KERN_CRIT: 临界状态,严重操作失败

KERN_ERR:  报告错误状态

KERN_WARNING: 对可能出现的情况进行警告

KERN_NOTICE:有必要进行提示的正常情形

KERN_INFO:   提示性信息

KERN_DEBUG:  用于调试信息

 

创建/PROC 下文件 使用调试

 

 

/proc 系统
  1. /proc目录

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。 用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。 除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。   创建一个/proc 下的一个文件   首先,流程图。     结果创建成功         大致流程   ,编写seq的接口,绑定到文件,将seq接口注册到proc_open函数中,每次创建一个proc文件后将seq 接口绑定到scull_proc_ops ,每次创建一个proc 文件后,可以通过此结构调用到seq的方法。  

 

Linux调度器调试接口:debugfs与/proc/sched_debug实战指南 操作系统进程调度是Linux内核的核心机制,通过时间片轮转和优先级管理实现多任务并发。调度器作为资源分配的中枢,其决策质量直接影响系统吞吐量和响应延迟。在性能调优场景下,理解调度器内部状态至关重要。Linux提供了debugfs和/proc/sched_debug两大调试接口,前者通过内存文件系统展示CPU调度域拓扑和CFS运行时统计,后者提供运行队列负载、进程时间片等全局视图。这些接口能有效诊断CPU负载不均、实时进程饥饿等典型问题,例如通过vruntime差值分析调度延迟,或结合ftrace追踪瞬时异常 阅读详情

相关推荐

国产FPGA逆袭!深度评测复旦微RFVU3P5G核心板在相控阵雷达中的表现

本文深度评测了复旦微RFVU3P5G核心板在相控阵雷达中的实战表现。该核心板凭借射频直采架构、高采样率ADC/DAC及丰富的DSP资源,在多通道同步精度、动态范围及系统稳定性等关键指标上表现出色,展现了国产FPGA在高端雷达应用中的硬核实力与供应链自主价值。

b0c1d2的博客 726

内核死锁的debug方法~

发生死锁时用什么方法可以发现并解决相关问题。lockdep 死锁检测模块Linux内核提供死锁调试模块Lockdep,跟踪每个锁的自身状态和各个锁之间的依赖关系,经过一系列的验证规则来确保...

1771

Beyond the Spec: Decoding Samsung‘s LPDDR6 Sub-Channel and Wide-NRZ Innovations

本文深入解析了三星LPDDR6内存的两大核心技术:Sub-Channel架构与Wide-NRZ信号技术。Sub-Channel架构通过将物理通道划分为多个独立子通道,实现了内存访问的细粒度控制,大幅提升了能效,尤其适用于AI与边缘计算场景。Wide-NRZ则通过增加并行数据线而非采用PAM4,在提升带宽的同时保持了优异的信号完整性与低功耗特性。

weixin_29209801的博客 136

内核调试配置选项

转自:http://www.ibm.com/developerworks/cn/linux/l-kdb/ 内核调试配置选项 为了方便调试和测试代码,内核提供了许多与内核调试相关的配置选项。这些选项大部分都在内核配置编辑器的内核开发(kernel hacking)菜单项中。在内

Yasin Lee 6995

固定翼飞行器建模(二)——MATLAB/Simulink建模、配平及线性化

MATLAB/Simulink固定翼建模、配平及线性化。

2302_80148937的博客 1万+

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)

部署ffmpeg用来处理视频的各种操作,如编码解码,格式转换,剪辑,处理实时视频流,音频流,加滤镜等

zhouwenxing666的博客 9041

竞争_LOCK

spin_lock VS spin_lock_irqsave   他们两者只有一个差别:是否调用local_irq_disable()函数, 即是否禁止本地中断。在任何情况下使用spin_lock_irq都是安全的。因为它既禁止本地中断,又禁止内核抢占。spin_lock比spin_lock_irq速度快,但是它并不是任何情况下都是安全的。举个例子:进程A中调用了spin_lock(&lock

Free Bar 807

一文搞懂STM32定时器翻转模式(产生多路频率、占空比的PWM)

(产生多路频率、占空比的PWM)

weixin_56688599的博客 7936

procd系列三:调试

procd

weixin_43412488的博客 565

8. Spring Ai之入门到精通(超级详细)

Spring AI 1.0.0 M1里程碑版本发布,标志着 Java 终于踏进Ai的时代半只脚。

gorgor在码农 3万+

高性能C#上位机:多串口并发,百万数据不卡顿

去年做了一个环境监测项目,要对接32个串口传感器,每个传感器每秒发10条数据,一天下来就是2700多万条数据,之前的老程序跑起来UI直接卡死,数据丢包率高达10%,存到数据库要卡半天,客户要求数据丢包率为0,UI响应延迟≤100ms,百万级数据查询≤1s。这套多串口通信方案已经用在了我们公司10多个项目上,最多支持64个串口同时并发,每秒处理3000条数据,完全不卡顿,数据零丢包,客户非常满意,最近做的一个光伏监测项目,对接了48个串口传感器,稳定运行了6个月,没有出过任何问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 426

Linux设备驱动程序(四)——调试技术

由于内核是一个不与特定进程相关的功能集合,所以内核代码无法轻易地放在调试器中执行,而且也很难跟踪跟踪,本章节将介绍监视内核代码并跟踪错误的技术。

明天你好的博客 3101

KingSCADA实现按钮点击效果

哈喽,你好啊,我是雷工!在做SCADA项目的时候,按钮是不可缺少的功能,但软件自带的按钮太丑,已经无法满足现如今客户对界面美观度的要求。这时候就需要UI小姐姐设计美观大气的SCADA界面,但UI设计的按钮切图放到程序中只是图片素材,当添加了按钮功能时,虽然能实现按钮功能,但没有任何点击效果;当遇到有需要连锁条件才能点击的按钮时,操作员无法区分是有连锁点击了没反应,还是系统界面卡死了导致的没点击成功,这时候有点击效果就能很好的区分这种问题。本篇介绍一种实现按钮点击效果的方法,以下为操作过程。

做有价值的事,积累有价值的笔记! 2765

/proc文件系统用于内核调试

一、/proc文件系统简介 Linux提供了一个特殊的文件系统——/proc,通过建立内核与进程之间发送信息的机制,使得可以在进程运行时动态地读写内核内部的数据结构、改变内核设置。与其他文件系统的不同之处在于,/proc是处于内存之中的。 /proc中的每个文件都绑定于一个内核函数,当用户读取某个文件时,将调用指定函数读取所需信息返回给用户空间,对于内核模块调试而言,需要查看内核所处的

happygongzhuo的专栏 512

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ldd3学习笔记——通过查询调试之/proc文件系统

零、写在开头的话   在这里整理一些关于ldd3这本书的学习笔记,由于才开始学习,故此这里写下的是自己的理解,可能会有一些偏差,不过学习是积累的过程,后面学习有了新的发现再回过头来进行修改,也是可以的。   使用优快云博客来记录是因为可以有较好的格式,在代码的表现上比Word好太多了,并且可以得到保存和分类。话不多说,开始整理一些内容 一、通过查询方式调试   在ldd3中,查询调试方法的前一节...

weixin_41982689的博客 459

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux /proc目录下和ELF反调试有关的文件

wchan /proc/[pid]/wchan显示进程sleep时,kernel当前运行的函数。调试状态下,wchan文件会显示ptrace_stop。 cmdline /proc/[pid]/cmdline文件存放进程的命令内容。使用GDB这类的调试器时,调试会fork一个子进程,然后执行ELF程序。此时,ELF文件就可以通过getppid()获取父进程pid,然后检测cmdline...

siphre 1145

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

/proc/sched_debug 理解和调试内核调度

cpu#0rt_rq[0]:dl_rq[0]:cpu#1。

landywyliu专栏 571

Core Dump和/proc调试 - Orisun - 博客园

Core Dump和/proc调试 - Orisun - 博客园 Core Dump和/proc调试 - Orisun - 博客园Core Dump和/proc调试Core Dump通过Core Dump是事后调试(postmortem debug)。首先把Core...

126

/proc目录下助于调试相关的文件

在内核2.4.29版本以前,此文件的内容为系统当前挂载的所有文件系统,在2.4.19以后的内核中引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向/proc/self/mounts(每个进程自身挂载名称空间中的所有挂载点列表)文件的符号链接;与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。具有一些独特的特点。

engineer0的博客 1104

Linux内核调试 /sys和/proc

一、/proc文件系统介绍   /proc系统是一个虚拟文件系统,存在于内存中,我们可以使用cat查看,但是size为0!以下是使用ls -l 得到的结果!   图中每个数字都代表了一个进程,/proc中的值就是内核中的数据结构的值! 二、/sys文件系统   /proc是为了Linux内核调试创建的,但是早起的建立没有严格的规则所以/proc下文件很乱!   而/sys跟为严格有序...

weixin_30907523的博客 323

Core Dump和/proc调试

Core Dump 通过Core Dump是事后调试(postmortem debug)。 首先把Core文件的大小设置为1024 orisun@zcypc:~$ ulimit -c 0 orisun@zcypc:~$ ulimit -c 1024 注意此修改仅在当前shell有效 root@zcypc:/home/orisun# echo "/corefile/core-%e-%p...

weixin_34075268的博客 143

编译与调试完全指南—第15章 proc/sys文件系统接口速查

文章摘要 《proc/sys文件系统接口速查》详细介绍了Linux内核通过/proc和/sys虚拟文件系统向用户空间提供的内核运行时信息与配置接口。内容分为/proc系统级信息、进程级信息、网络信息和/sys设备配置接口四大类,包含CPU、内存、磁盘、网络等核心子系统的关键接口说明。文中提供了典型命令示例、输出解析和调试用途说明,并通过流程图清晰展示了各接口的层级关系。章末附有按功能分类的速查表,是系统调试、性能分析和故障排查的重要参考指南。

weixin_43149888的博客 203

嵌入式Linux的隐秘角落:从/proc到/sys,那些被忽视的调试与优化艺术

本文深入探讨嵌入式Linux系统中/proc和/sys文件系统的调试与优化技巧,通过实际案例展示如何利用这些接口监控内存、中断、GPIO和电源状态,提升嵌入式设备的性能和稳定性,为开发者提供实用的工程实践方法。

vvv99的博客 614

Linux /proc/<pid>/maps 内存映射调试指南

本文档详细解析了Linux系统中/proc/<pid>/maps文件的结构与用途,该文件用于查看进程的虚拟内存布局。主要内容包括: 基本格式:每行代表一个虚拟内存区域,包含地址范围、权限、文件偏移、设备号、inode和路径等字段。 权限标志:详细解释了rwxp权限位的含义及常见组合,如r-xp(代码段)、rw-p(数据段)等。 特殊标记:说明了[stack]、[heap]、[vdso]等特殊路径标记的含义。 调试技巧:提供了快速查询命令和地址检查脚本,帮助定位内存问题。

图形/计算GPU的驱动与虚拟化技术分享园地 2117

使用 /proc/sysrq-trigger 进行系统调试和故障排除

/proc/sysrq-trigger 是 Linux 内核提供的一个接口,它允许用户通过写入特定命令来触发系统请求(SysRq)功能。

lyndon 2586
上一篇: 简单字符驱动设备
下一篇: 竞态与并发
zmrlinux
博客等级 码龄12年 409粉丝 327原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值