:doc: 内核traceback文档

This commit is contained in:
fslongjin 2022-07-17 23:30:51 +08:00
parent 4deb85369f
commit 427c71b327
2 changed files with 34 additions and 2 deletions

View File

@ -7,4 +7,4 @@
:maxdepth: 1
:caption: 目录
kernel_api
traceback

View File

@ -1,3 +1,35 @@
# 内核栈traceback
[内容待完善]
## 简介
  内核栈traceback的功能位于`kernel/debug/traceback/`文件夹中。为内核态提供traceback的功能打印调用栈到屏幕上。
---
## API
### `void traceback(struct pt_regs * regs)`
#### 作用
  该接口定义于`kernel/debug/traceback/traceback.h`将会对给定内核栈进行traceback并打印跟踪结果到屏幕上。
#### 参数
##### regs
  要开始追踪的第一层内核栈栈帧(也就是栈的底端)
---
## 实现原理
  当内核第一次链接之后将会通过Makefile中的命令运行`kernel/debug/kallsyms`程序,提取内核文件的符号表,然后生成`kernel/debug/kallsyms.S`。该文件的rodata段中存储了text段的函数的符号表。接着该文件将被编译为`kallsyms.o`。最后Makefile中再次调用`ld`命令进行链接将kallsyms.o链接至内核文件。
  当调用`traceback`函数时,其将遍历该符号表,找到对应的符号并输出。
---
## 未来发展方向
- 增加写入到日志文件的功能