让function_graph输出返回值

作者

彭东林
pengdonglin137@163.com

背景

最近在分析内核问题时用了function_graph,用它来分析为什么应用的某个系统调用会返回错误。在分析的时候,根据function_graph的输出确定代码执行流程,但是有时又需要知道函数的返回值来进一步定位出错位置。目前获取函数返回值的方法可以用kprobe_events的kretprobe指令,或者使用bpftrace。如果函数太多的话,用起来也是很繁琐,不如让function_graph直接输出函数返回值。

目前仅在ARM64和X86_64上做过测试,用起来效果还可以。

目前这种方式的缺点是不会判断函数是否又返回值,即使是返回void,那么也会输出,所以具体返回值是什么含义需要
结合源码来分析。

Patch

下面是patch的链接:
https://patchwork.kernel.org/project/linux-trace-kernel/patch/20230306113447.215527-1-pengdonglin@sangfor.com.cn/

用法

image
image
image
image

posted @ 2023-02-16 15:27  摩斯电码  阅读(49)  评论(0编辑  收藏  举报