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

1.1 KiB
Raw Blame History

内核栈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函数时,其将遍历该符号表,找到对应的符号并输出。


未来发展方向

  • 增加写入到日志文件的功能