# Trace/Profie/Debug

随着对内核理解的深入，是时候了解一下对内核调试、跟踪、画像的技术了。

不仅可以帮助自己了解内核运行，更能在出现性能问题时定位瓶颈。

在内核中能帮助我们的工具有很多，让我一一学来。

经过一段时间学习，发现内核中很多探测方法都基于了ftrace提供的框架。比如在[ftrace 中 eventtracing 的实现原理](https://www.ibm.com/developerworks/cn/linux/1609_houp_ftrace/index.html)中提到的trace原理，以及其他探测机制是如何使用ftrace框架的。在这里也把文中的图放在这里，做一个直观的了解。

![ftrace framework](https://1838005143-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fq1T0mmRojL1RaCyUY15S%2Fuploads%2Fgit-blob-e1801c716ff5b6161eac157a9c26e56e9cfb19a2%2Fftrace_framework.png?alt=media)

既然如此，那我们就先来看看ftrace的使用以及原理。

[ftrace的使用](00-index-2/03-ftrace_usage)

[探秘ftrace](00-index-2/04-ftrace_internal)

了解了原理后，我们来看看都有哪些工具会依赖ftrace。

比如 [内核热补丁的黑科技](00-index-2/05-kernel_live_patch)。这个看上去不像是trace的工具，却依赖ftrace框架来实现的。

还有一个借用了部分ftrace框架，但是实际上是另一个机制的[Trace Event](00-index-2/02-trace_event)

接着来看的是传说为瑞士军刀的[eBPF初探](00-index-2/01-ebpf). 严重怀疑后续可能要完整的一章来讲述清楚。

对eBPF的探索中，发现他和内核系统中其他的探测机制有着非常深厚的关联。

比如:

[TraceEvent](00-index-2/02-trace_event)
