前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DragonOS的内核栈traceback

DragonOS的内核栈traceback

作者头像
灯珑LoGin
发布2022-10-31 15:42:09
4530
发布2022-10-31 15:42:09
举报
文章被收录于专栏:龙进的专栏

简介

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

未来发展方向

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

来源

代码语言:txt
复制
本文的当前版本编写于2022年7月17日,基于GPLv2协议开源于[github.com/fslongjin/DragonOS](http://github.com/fslongjin/DragonOS),对应commit为:[https://github.com/fslongjin/DragonOS/commit/427c71b3277673020310aa49b80df56dfc8991aa](https://github.com/fslongjin/DragonOS/commit/427c71b3277673020310aa49b80df56dfc8991aa)

转载请注明来源https://cloud.tencent.com/developer/article/2146034

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月17日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • API
    • void traceback(struct pt_regs * regs)
      • 作用
      • 参数
  • 实现原理
  • 未来发展方向
  • 来源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档