蜗窝科技

请教大家用什么办法看程序从用户空间到内核的执行过程

蜗窝讨论区存档 · Linux kernel技术问答 · 楼主 wall-E · 2016-10-20 · 6 帖

本文是原「蜗窝讨论区」的历史存档(2016-10-20),来自版块「Linux kernel技术问答」,共 6 帖。讨论区已停止服务,此处仅供查阅。

wall-E · 2016-10-20 21:20

include <sys/types.h>

include <dirent.h>

include <unistd.h>

int main({ DIR * dir; struct dirent *ptr; dir = opendir("/sys/bus/serio"); while((ptr = readdir(dir))!=NULL){ printf("d_name :%s ",ptr->d_name); } closedir(dir); return -1; }

比如上面这个,我想看到在内核里怎么跟sysfs里面的读的过程。该怎么进行,先谢谢大家。 我用strace命令 然后加编译后的可执行文件,结果只看到有很多mmap

wowo · 2016-10-21 10:12

从用户空间顶多就跟到系统调用吧?需要往kernel跟的话,不知道有没有好方法,比如backtrace?

wall-E · 2016-10-21 18:46

wowo 写道: 从用户空间顶多就跟到系统调用吧?需要往kernel跟的话,不知道有没有好方法,比如backtrace?

wowo我看到这篇博文 http://blog.csdn.net/fudan_abc/article/details/1783837 /device_model/314.html 以及这篇,里面都写到一些调用过程----想知道是怎么得到上述过程的,毕竟有时候有几个分支吧

wowo · 2016-10-22 21:17

wall-E 写道:

wowo 写道: 从用户空间顶多就跟到系统调用吧?需要往kernel跟的话,不知道有没有好方法,比如backtrace?

wowo我看到这篇博文 http://blog.csdn.net/fudan_abc/article/details/1783837 /device_model/314.html 以及这篇,里面都写到一些调用过程----想知道是怎么得到上述过程的,毕竟有时候有几个分支吧

这些都是读代码自己总结出来的吧?

electrlife · 2016-12-22 10:41

lz可以看下ftrace,可以看到函数级的调用,包括普通的非库函数!看看是否满足你的需求!

wowo · 2016-12-22 11:01

electrlife 写道: lz可以看下ftrace,可以看到函数级的调用,包括普通的非库函数!看看是否满足你的需求!

他想看kernel space的调用,ftrace看不到。