From 8828467a1b3a2ad4bcdfbc578cf00e956914ec23 Mon Sep 17 00:00:00 2001 From: gatieme Date: Fri, 31 Mar 2017 14:14:03 +0800 Subject: [PATCH] debug... --- study/debug/README.md | 18 +++++++++-- study/debug/modules/printk/README.md | 46 ++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 study/debug/modules/printk/README.md diff --git a/study/debug/README.md b/study/debug/README.md index 9add5a7..59fa8b6 100644 --- a/study/debug/README.md +++ b/study/debug/README.md @@ -196,6 +196,18 @@ mount -t sysfs sysfs /sysfs #3 printk ------- +在内核调试技术之中, 最简单的就是 `printk` 的使用了, 它的用法和C语言应用程序中的 `printf` 使用类似, 在应用程序中依靠的是 `stdio.h` 中的库, 而在 `linux` 内核中没有这个库, 所以在 `linux` 内核中, 实现了自己的一套库函数, `printk` 就是标准的输出函数 + + +[linux内核调试技术之printk](http://www.cnblogs.com/veryStrong/p/6218383.html) + + +[调整内核printk的打印级别](http://blog.csdn.net/tonywgx/article/details/17504001) + + +[ linux设备驱动学习笔记--内核调试方法之printk](http://blog.csdn.net/itsenlin/article/details/43205983) + + #4 ftrace && trace-cmd ------- @@ -255,7 +267,7 @@ mount -t sysfs sysfs /sysfs -##4.2 trace-cmd +##4.2 ftrace前端工具trace-cmd ------- * trace-cmd 介绍 @@ -284,7 +296,7 @@ sudo trace-cmd reord subsystem:tracing #5 Kprobe && systemtap ------- -##5.1 kprobe +##5.1 内核kprobe机制 ------- @@ -312,7 +324,7 @@ sudo trace-cmd reord subsystem:tracing -##5.2 systemtap +##5.2 前端工具systemtap ------- diff --git a/study/debug/modules/printk/README.md b/study/debug/modules/printk/README.md new file mode 100644 index 0000000..0d07028 --- /dev/null +++ b/study/debug/modules/printk/README.md @@ -0,0 +1,46 @@ +http://blog.csdn.net/arethe/article/details/6293505] +http://lxr.free-electrons.com/source/Documentation/trace/tracepoints.txt +https://lwn.net/Articles/410200/ + + +#1 驱动安装 +------- + + +sudo insmod trace-events-sample.ko + + +#2 检查驱动 +------- + +cat /sys/kernel/debug/tracing/available_events | grep sample-trace + +cd /sys/kernel/debug/tracing/events/sample-trace + + +#3 列出所有的events +------- + +find /sys/kernel/debug/tracing/events -type d + +cat /sys/kernel/debug/tracing/available_events + +trace-cmd list + +perf list 2>&1 | grep Tracepoint + +#3 trace-cmd +------- + +sudo trace-cmd reset + +sudo trace-cmd record -e sample-trace:foo_with_template_print + +sudo trace-cmd report + + +#文档中的错误 +------- + +http://lxr.free-electrons.com/source/Documentation/trace/events.txt?v=4.10#L278 +all events but those that have not a prev_pid field retain their old filters