请教大家用什么办法看程序从用户空间到内核的执行过程
本文是原「蜗窝讨论区」的历史存档(2016-10-20),来自版块「Linux kernel技术问答」,共 6 帖。讨论区已停止服务,此处仅供查阅。
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
从用户空间顶多就跟到系统调用吧?需要往kernel跟的话,不知道有没有好方法,比如backtrace?
wowo 写道: 从用户空间顶多就跟到系统调用吧?需要往kernel跟的话,不知道有没有好方法,比如backtrace?
wowo我看到这篇博文 http://blog.csdn.net/fudan_abc/article/details/1783837 /device_model/314.html 以及这篇,里面都写到一些调用过程----想知道是怎么得到上述过程的,毕竟有时候有几个分支吧
wall-E 写道:
wowo 写道: 从用户空间顶多就跟到系统调用吧?需要往kernel跟的话,不知道有没有好方法,比如backtrace?
wowo我看到这篇博文 http://blog.csdn.net/fudan_abc/article/details/1783837 /device_model/314.html 以及这篇,里面都写到一些调用过程----想知道是怎么得到上述过程的,毕竟有时候有几个分支吧
这些都是读代码自己总结出来的吧?
lz可以看下ftrace,可以看到函数级的调用,包括普通的非库函数!看看是否满足你的需求!
electrlife 写道: lz可以看下ftrace,可以看到函数级的调用,包括普通的非库函数!看看是否满足你的需求!
他想看kernel space的调用,ftrace看不到。
