2016-12-27 53 views
0

我想在内核模块中生成用户堆栈跟踪。 实际上,我制作了一个内核模块,通过挂接系统调用表来拦截关闭系统调用。 我想知道是谁在用户模式下调用此系统调用的特定fd。在我的内核模块中,比较跟踪fd和给定的参数,如果匹配,则想做一个用户空间调用堆栈。我试图通过dump_stack()或WARN宏进行回溯,但它生成了kerenl堆栈跟踪。 可以在kerenl模块中获取用户堆栈跟踪吗?如何在内核模块中生成用户堆栈跟踪

回答

0

如果您不介意用户程序终止,您可以中止它。 G。与force_sig(SIGABRT, current)并用调试器分析核心转储。

0

可以使用save_stack_trace_user()功能与你的内核模块实现的是:

void save_stack_trace_user(struct stack_trace *trace); 

你可以看看ftrace是怎么做的内核:ftrace_trace_userstack