使用perf、ftrace抓取指定发生指定事件时的调用栈(内核态+用户态)

admin2024-08-20  10

背景

有时我们会有这样的需求,我们希望获得发生某个内核事件时的调用栈,从内核态一直到用户态。

解决

庆幸的是,Linux提供了这样的机制和工具。下面分别用perf和trace_event来实现这个功能。

使用的平台是ARM64,下面事件events/exceptions/mem_abort_user为例进行说明,这个事件是我仿照x86添加的,当用户态发生缺页异常时会触发这个事件。

trace_event

使用下面的命令组合:

echo 'common_pid == 8469' > events/exceptions/mem_abort_user/filter
echo 1 > events/exceptions/mem_abort_user/enable
echo 1 > options/userstacktrace
echo<
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!