现状与问题
目前无论x86_64还是risc-v,打印系统调用号的方法是在对应架构系统调用入口进行打印,并给予Pid等在函数逻辑中进行打印的判断。并且,直接打印调用号的数字,没有做可读性的提升,在遇到陌生的调用or错误的返回时还得特地查对应的调用号与错误码。
建议
从两个方面考虑
- 要求在不启用调用打印时不影响调用性能(允许打印时进行必要的可读化)
- 模块化,且对于通用的系统调用不需要重复引入
因此或许可以直接在 struct Syscall
下进行打印,以实现类似下图所示的打印效果:
这功能本身就是纸糊的,我的想法就是实现ptrace,正儿八经的能用strace命令去追踪。