DragonOS/docs/kernel/debug/traceback.md
2022-07-17 23:30:51 +08:00

35 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 内核栈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`函数时,其将遍历该符号表,找到对应的符号并输出。
---
## 未来发展方向
- 增加写入到日志文件的功能