栈trace(kprobe)

news2024/12/23 17:32:41

最近在看CPU/GPU的调用,于是就有了:

与事件跟踪器类似,不需要通过 current_tracer 激活。相反,通过 /sys/kernel/tracing/kprobe_events 添加探测点,并通过 /sys/kernel/tracing/events/kprobes/<EVENT>/enable 启用它。

这是一个大佬的sh 脚本

#!/system/bin/sh

CURRENT_DIR=$(pwd)
TRACE_DIR='/sys/kernel/debug/tracing/'

set stack_fun=try_to_wake_up

cd ${TRACE_DIR}
echo nop > current_tracer
echo 0 > ./tracing_on && echo > ./trace
echo 'p trigger_load_balance' > ./kprobe_events
echo 1 > ./options/stacktrace
# or
# echo 'stacktrace' > ./events/kprobes/p_vfs_open_0/trigger

echo 1 > ./events/kprobes/p_trigger_load_balance_0/enable # turn on
echo 1 > ./tracing_on
sleep 10
#${SCRIPT_DIR}/run_test.sh && cp ./trace ${SCRIPT_DIR}/trace_test.log
echo 0 > ./tracing_on
echo 0 > ./events/kprobes/p_trigger_load_balance_0/enable # turn off

# echo '!stacktrace' >  ./events/kprobes/p_vfs_open_0/trigger
echo 0 > ./options/stacktrace
echo '-:p_trigger_load_balance_0' >> kprobe_events
cat /sys/kernel/tracing/trace_pipe >> /data/1.txt

cd /sys/kernel/tracing

echo 'p dev_pm_qos_update_request' > ./kprobe_events

echo 1 > ./options/stacktrace

echo 1 > events/kprobes/p_dev_pm_qos_update_request_0/enable

echo 1 > tracing_on

触发条件后取消设置

echo 0 > ./tracing_on

echo 0 > events/kprobes/p_dev_pm_qos_update_request_0/enable

echo '-:p_dev_pm_qos_update_request_0' >>kprobe_events 

输出结果:

 cat /sys/kernel/tracing/trace_pipe >> /data/1.txt 

或者 清除所有探测点

echo > /sys/kernel/tracing/kprobe_events


网上另外的方法:

cd /sys/kernel/debug/tracing
# echo 'p:myopen1 do_sys_open' >> kprobe_events 
# echo 'p:myopen2 do_sys_open' >> kprobe_events 
**cd instances**
mkdir myopen1
mkdir myopen2
echo 1 > myopen1/events/kprobes/myopen1/enable
echo 1 > myopen2/events/kprobes/myopen2/enable
cat myopen1/trace_pipe
cat myopen2/trace_pipe


遇见的问题:

1.

kprobe 无法清除。关机重启也不行,问过大佬说是我打得包有问题,有人做了usb的特殊处理

2.如何选定函数

打印栈,是对函数流程有一个大致的理解,然后选定函数。而且不要选择static 的函数

参考链接:

Kprobe-based Event Tracing — The Linux Kernel documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/989783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图片怎么转换成pdf格式?好方法必须分享

图片怎么转换成pdf格式&#xff1f;也许一些朋友会问&#xff0c;为什么要将图片转换成PDF文件呢&#xff1f;众所周知&#xff0c;PDF文件格式具有较高的安全性和兼容性&#xff0c;并且不容易编辑。因此&#xff0c;在打印时&#xff0c;将图片转换成PDF格式后再进行打印可以…

Ubuntu-22.04通过RDP协议连接远程桌面

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、RDP是什么&#xff1f;二、配置1.打开远程桌面功能2.验证服务3.防火墙配置4.测试效果 总结 前言 由于一些特殊需要&#xff0c;我需要通过远程桌面连接到U…

0017Java程序设计-spr农业过程化管理系统

摘 要目 录系统设计开发环境 摘 要 本农业过程化管理系统就是建立在充分利用现在完善科技技术这个理念基础之上&#xff0c;并使用IT技术进行对农业过程化的管理&#xff0c;从而保证种植户能种植出优质的农作物&#xff0c;可以实现农业过程化的在线管理&#xff0c;这样保证…

传输层-TCP 的安全机制和高效策略

可靠性&#xff1a; 之前我们在UDP中谈到了&#xff0c;UDP不可靠但是简单&#xff0c;TCP可靠但是也要做更多的工作&#xff0c;那这些工作具体是什么呢&#xff1f;接下来让我们详细了解一下。 确认应答机制&#xff08;ACK机制&#xff09; 序号&#xff1a;我们可以把TCP…

Qt配置使用MSVC编译器

Qt配置使用MSVC编译器_qt msvc-CSDN博客注意:Qt支持的MSVC就是2017和2015&#xff0c;所以vs也要下载2017&#xff0c;不要直接用最新的&#xff0c;安装路径都用默认的。程序运行失败时可以尝试windeployqt拷贝库文件到本地&#xff0c;然后有可能就能运行了。VS官网下载Visua…

SOLIDWORKS工程图自动零件序号的极致体验

在装配体工程图中零件序号的标注要求不能漏标、要和明细表项目相对应、位置适当并且要按序排列。 这些要求看似简单&#xff0c;但是却需要极大的精力去完成。当然在SOLIDWORKS中这些问题都被很好的解决了&#xff0c;这也是本次分享的内容。 自动序号标注 1) 在进行尺寸标注前…

内网父子项目pom依赖依赖导入出现

这是拉下来两个独立的项目&#xff0c;子项目依赖父项目 我就把父项目install maven仓库中 再加载子项目 在子项目中就出现了有父项目导入类的提示但无论如何也导入不了该类 最后找错 我把本地父项目 install在maven仓库中删了 让子项目自动加载 就根据pom配置加载到内网仓库…

初始化一个 vite + vue 项目

创建项目 首先使用以下命令创建一个vite项目 npm create vite然后根据提示命令 cd 到刚创建的项目目录下&#xff0c;使用npm install安装所需要的依赖包&#xff0c;再使用npm run dev即可启动项目 配置 vite.config.js 添加process.env配置&#xff0c;如果下面 vue-route…

a_bogus 音 算法还原大赏

a_bogus算法还原大赏 hello&#xff0c;大家好呀&#xff0c;我是你的好兄弟&#xff0c;[星云牛马]&#xff0c;花了几天时间算法还原了这个参数的加密过程&#xff0c;一起看看吧&#xff0c;记得加入我们的学习群&#xff1a;529528142 天才第一步&#xff0c;F12你会不&am…

jframe生成柱状图片+图片垂直合并+钉钉机器人推送

需求&#xff1a; 后端根据数据自动生成2个图片&#xff0c;然后把两张图片合并成一张图片&#xff0c;再发到钉钉群里&#xff0c;涉及到定时生成和推送&#xff0c;当时我们测试同事说他们写定时脚本放到服务器上&#xff0c;然后让我提供生成图片的方法和钉钉机器人的逻辑 天…

rhcsa5(日志、维护准确时间)

分析和存储日志 许多系统都以文本文件的方式记录事件日志&#xff0c;而这些文件保存在/var/log目录中。 在红帽中有systemd-journald和rsyslog服务管理日志进程。systemd-journald服务是操作系统事件日志架构的核心&#xff0c;包括内核、引导过程早期阶段的输出、守护进程启动…

第16章_多版本并发控制MVCC

1. 什么是MVCC MVCC &#xff08; Multiversion Concurrency Control &#xff09;&#xff0c;多版本并发控制。顾名思义&#xff0c; MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在 InnoDB 的事务隔离级别下执行 一致性读 操作有了保证。换…

计算机毕业设计 基于SSM的问卷调查管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

孙哥Spring源码第20集

第20集 refresh()-invokeBeanFactoryPostProcessor 四-处理Configuration下的Bean生成代理对象 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】【微信号&#xff1a;suns45】 1、二行InvokeBeanFactoryPostProcessors的作用 registryProcessors&#xff1a;处理的…

c语言逻辑思维

c语言逻辑思维 1.如何问问题? 有甲、乙两人&#xff0c;其中&#xff0c;甲只说假话&#xff0c;而不说真话;乙则是只说真话&#xff0c;不说假话。但是&#xff0c;他们两个人在回答别人的问题时&#xff0c;只通过点头与摇头来表示&#xff0c;不讲话。有一天&#xff0c;一…

怎么压缩pdf文件大小?详细压缩步骤

怎么压缩pdf文件大小&#xff1f;在日常的工作和学习中&#xff0c;我们频繁地处理PDF文件。然而&#xff0c;有时候这些文件的大小可能会非常庞大&#xff0c;这给我们带来了一系列的问题。首先&#xff0c;它们占用了大量的存储空间&#xff0c;使得我们的设备变得拥挤不堪。…

const int* , const int * const, int * const之间的区别

const int * p、int * const p 和 const int * const p 是指针声明中的三种常见形式&#xff0c;它们之间有以下区别&#xff1a; const int * p: 这表示 p 是一个指向常量整数的指针。指针 p 是可变的&#xff08;mutable pointer&#xff09;&#xff0c;可以改变它所指向的对…

小白备战大厂算法笔试(四)——哈希表

文章目录 哈希表常用操作简单实现冲突与扩容链式地址开放寻址线性探测多次哈希 哈希表 哈希表&#xff0c;又称散列表&#xff0c;其通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询。具体而言&#xff0c;我们向哈希表输入一个键 key &#xff0c;则可以…

基于Java+SpringBoot+Vue摄影分享网站的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

JAVA怎么进行内存管理? - 易智编译EaseEditing

Java使用自动内存管理系统&#xff0c;主要通过垃圾回收器&#xff08;Garbage Collector&#xff09;来进行内存管理。这意味着开发人员不需要手动分配或释放内存&#xff0c;而是让垃圾回收器来处理不再使用的对象的内存释放。以下是关于Java内存管理的一些重要概念和建议&am…