網站首頁 編程語言 正文
0.內核配置:
CONFIG_FUNCTION_TRACER
CONFIG_FUNCTION_GRAPH_TRACER
一、 function graph tracer的使用
1.掛載debugfs文件系統
mount -t debugfs none /sys/kernel/debug
2.進入tracing調試目錄
cd /sys/kernel/debug/tracing
3.設置為function_graph功能
echo function_graph > ./current_tracer
4.添加需要跟蹤的函數blk_update_request
echo ‘phytium_lpc_probe’ > ./set_graph_function
5.開啟跟蹤
echo 1 > ./tracing_on
6.執行自己的操作或者腳本,等待函數運行或者bug出現
7.關閉跟蹤
echo 0 > ./tracing_on
8.取出log
cp ./trace ~/log.txt
優化:
1.設置函數過濾
echo vfs_open > ./set_ftrace_filter
2.設置當前進程pid過濾
echo $$ > /sys/kernel/debug/tracing/set_ftrace_pid
3.函數結束的反括號后帶函數入口的注釋
echo 1 > ./options/funcgraph-proc
echo 1 > ./options/funcgraph-tail
4.使能trace子進程
echo 1 > /sys/kernel/debug/tracing/option/function-fork
二、kprobe的使用
1.掛載debugfs文件系統
mount -t debugfs none /sys/kernel/debug
2.進入tracing調試目錄
cd /sys/kernel/debug/tracing
3.設置配置屬性獲取函數傳入參數和返回值
echo ‘p:myprobe do_fork clone_flags=%r0 stack_start=%r1 stack_size=%r2 parent_tidptr=%r3 child_tidptr=+0($stack)’ > /sys/kernel/debug/tracing/kprobe_events
echo ‘r:myretprobe do_fork $retval’ >> /sys/kernel/debug/tracing/kprobe_events
4.開啟探測并觸發函數調用
echo 1 > events/kprobes/myprobe/enable
echo 1 > events/kprobes/myretprobe/enable
5.執行自己的操作或者腳本,等待函數運行或者bug出現
6.取出log
cp ./trace ~/log.txt
優化:
1.激活堆棧查看函數調用關系
echo stacktrace > trace_options
2.設置過濾PID信息
echo common_pid!=512 > events/kprobes/myprobe/filter
三、 trace event的使用
1.掛載debugfs文件系統
mount -t debugfs none /sys/kernel/debug
2.進入tracing調試目錄
cd /sys/kernel/debug/tracing
3.設置events跟蹤開關
ehco 1 > ./events/kmem/kmalloc/enable
ehco 1 > ./events/kmem/kfree/enable
4.開啟跟蹤
echo 1 > ./tracing_on
5.執行自己的操作或者腳本,等待函數運行或者bug出現
6.關閉跟蹤
echo 0 > ./tracing_on
7.取出log
cp ./trace ~/log.txt
優化:
1.設置內存內存過濾信息
echo bytes_alloc==4096 > ./events/kmem/kmalloc/filter
原文鏈接:https://blog.csdn.net/sinat_22338935/article/details/122705466
相關推薦
- 2022-09-16 Linux?Shell如何用ssh命令統計分布式集群信息詳解_linux shell
- 2022-12-06 靜態pod?創建使用示例詳解_docker
- 2022-06-01 SQL為什么不建議執行超過3表以上的多表關聯查詢_MsSql
- 2022-10-08 Pandas數據分析之pandas數據透視表和交叉表_python
- 2022-06-25 iOS使用NSURLConnection實現斷點續傳下載_IOS
- 2022-11-29 Android?Handler?runWithScissors?梳理流程解析_Android
- 2022-04-30 .Net?生成壓縮文件問題記錄(推薦)_實用技巧
- 2022-11-17 ios開發Flutter構建todo?list應用_IOS
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支