如何使用ltrace跟踪应用层程序调用系统库情况?
2025-04-01
ltrace
是一个用于跟踪进程调用动态库函数的工具,主要用于调试和分析程序运行时与共享库(.so 文件)的交互情况...
2025-04-01
ltrace
是一个用于跟踪进程调用动态库函数的工具,主要用于调试和分析程序运行时与共享库(.so 文件)的交互情况...
2025-03-31
最近在学Zig
,发现它是一门很不错的语言,有很多现代语言的特性。而且能够和C语言很好的融合。zig编译器也是一个很好的C语言编译器,能够很好的组织项目,无论是纯C语言项目...
2025-03-31
最近在学Zig
,发现它是一门很不错的语言,有很多现代语言的特性。而且能够和C语言很好的融合。zig编译器也是一个很好的C语言编译器,能够很好的组织项目,无论是纯C语言项目...
2025-03-30
struct platform_device
是用于描述硬件信息的驱动,其他驱动可以通过名称和它进行匹配。一旦匹配成功后,可以通过它来获取硬件的信息。下面的例子就演示了如何进行驱动匹配和获取硬件信息...
2025-03-28
struct platform_device
是Linux内核中用于表示平台设备的重要数据结构,它是Linux设备模型的一部分,特别用于那些不通过传统总线(如 PCI、USB 等)连接的设备...
2025-03-25
struct tasklet_struct
是Linux内核中用于实现"小任务"(tasklet)机制的数据结构。Tasklet是一种底层的延迟执行机制,常用于中断处理的下半部(Bottom Half)...
2025-03-25
struct work_struct
是Linux内核中用于实现延迟工作(deferred work)机制的重要数据结构,属于工作队列(workqueue)子系统的一部分...
2025-03-22
在用户态访问i2c从设备也是比较常用的功能。下面的例子就实现了如何读取和设置i2c从设备的GPIO引脚...
2025-03-18
Linux的sysfs是一种虚拟文件系统,用于将内核对象、属性和关系导出到用户空间,方便用户和管理员查看和配置内核及硬件信息。sysfs通常挂载在/sys
目录下...
2025-03-13
在Linux内核中,miscdevice是一种用于简化字符设备驱动注册的机制。它适用于那些不需要主设备号的简单设备驱动。miscdevice使用一个固定的主设备号(10)...
2025-03-12
很好奇I2C设备是如何与驱动进行匹配的吧?一般是通过设备树文件来描述I2C从设备的信息,例如名称和地址等。驱动通过和名称与从设备进行匹配...
2025-03-09
i2c
是嵌入式开发的常用协议,下面我们学习通过Linux驱动来读写i2c
设备的数据。通过设备树来获取i2c
的信息,使用Linux内核的i2c
子系统提供的接口来控制读写数据...
2025-03-04
proc
文件系统并不是真正存在于磁盘上的文件系统,而是由 Linux 内核动态创建的,用于提供一种访问内核数据结构和运行时系统信息的接口。它通常挂载在/proc
目录下...
2025-03-03
如果给Linux驱动实现fasync
函数,那么驱动就能够通过信号机制异步通知客户端程序。这个方法一般比较少用,但我们也要熟悉这种方法。下面就给大家带来一个完整的例子...
2025-03-01
应用层客户端程序使用ioctl
来控制设备的状态是一种很常见的情况。下面的例子就演示了如何去实现一个这样的字符串设备驱动...
2025-02-25
panic()
是Linux内核中一个关键函数,用于在发生无法恢复的严重错误时终止系统运行,并打印错误信息...
2025-02-25
dump_stack()
是 Linux 内核中一个关键的调试函数,用于在系统发生异常(如内核panic、oops或死锁)时打印当前线程的调用堆栈信息...
2025-02-24
proc
文件系统是一个由内核动态生成的虚拟文件系统,挂载在/proc
目录下。它不占用物理存储空间,而是通过内存实时反映系统和进程的运行状态...
2025-02-23
人在家中睡,锅从手机来。某天深夜接到几十条夺命短信,床头的手机不停地振动。你妈的,谁他妈在深夜不停发短息。匆忙拿起床头的手机,刺眼的屏幕亮瞎了程序员的狗眼。一阵恍惚后,定眼一看,坏事了...
2025-02-23
这里总结了Linux CPU相关的调试工具。包含性能指标和常用功能图表,可以通过图表很方便的找到对应的工具...
2025-02-22
在进行嵌入式Linux开发的过程中,经常需要和i2c
设备打交道。所以需要获取i2c
设备的状态,进行读写操作。在开源的世界里,当然有大神已经为我们写好了对应的工具:i2c-tools
...
2025-02-19
access_ok
函数用于验证用户空间指针在内核空间中是否有效且可访问。这是一项重要的安全检查,确保内核不会无意中访问无效或恶意的用户空间内存,否则可能导致安全漏洞、崩溃或未定义行为...
2025-02-18
在编程的时候,经常听见buffer
和cache
,很多时候我们都不区分它们。但在操作系统
中,它们是完全不同的两个概念。下面我带大家来看看它们两个到底是什么多西...
2025-02-15
bpftrace
是一个基于eBPF
(扩展的伯克利包过滤器)的高级跟踪工具,用于动态追踪Linux
系统的行为和性能。它允许用户通过简单的脚本语言编写跟踪程序,实时监控内核和用户空间的活动...
2025-02-14
BCC(BPF Compiler Collection)
是一个用于创建高效内核跟踪和操作的工具包,基于 eBPF(extended Berkeley Packet Filter)
技术。eBPF
允许用户在不修改内核源代码或加载内核模块的情况下,安全地运行自定义代码...
2025-02-13
trace-cmd
是一个用于控制Linux
内核跟踪工具ftrace
的命令行工具。ftrace
是Linux
内核内置的跟踪框架,能够帮助开发者调试和分析内核行为。trace-cmd
简化了ftrace
的使用,提供了更友好的接口来配置、启动、停止和查看跟踪数据...
2025-02-12
ftrace
是Linux
内核中的一种跟踪工具,用于分析和调试内核行为。它通过在内核函数中插入钩子来捕获函数调用、返回及其他事件,帮助开发者了解内核的执行流程和性能瓶颈...
2024-09-08
最为一名无聊的程序员,总会在无聊的时候想深入了解程序启动的流程
。大多数程序都是从main
函数开始写代码的,就会给人一种错觉:程序执行的第一行代码应该是main
函数...
2024-09-07
因为C++
中存在不同的错误处理方式,导致不同的库选择不同的错误方式。或一个库中存在多种不同的错误处理方式。使得整个C++
库生态乱七八糟,开发体验极其不好...
2024-09-07
程序开发中,对变量进行合适命名是一件麻烦的事情。所以很多编程语言提供了Lamdba
匿名函数。可是C
语言作为早期的编程语言,并不支持Lamdba
表达式...
2023-10-25
AI
是当下最热门的话题之一。而且大部分的AI
相关框架都是使用python
进行开发。正所谓万事开头难,第一步当然是搭建python
开发环境...