来自 strace 手册:
-i Print the instruction pointer at the time of the system call.
我跟踪了我的程序:
strace -i prog
结果我接到了很多系统调用。其中之一:
[000da49c] open("./rabbit.o", O_RDONLY) = 3
但是在这个 prog 地址的反汇编指令不会调用任何系统调用(hte 编辑器):
da49c ! mov r7, ip
怎么了?如何找到程序的系统调用位置?
附言我的设备架构不支持 GDB 命令捕获系统调用。
最佳答案
引用“strace”手册页的错误部分:
The -i option is weakly supported.
另一个可能对您有帮助的提示:您是否看过以前的代码?
输出时的 IP 已经指向系统调用之后的 NEXT 指令。
所以你应该检查da49c
之前的指令。
关于linux - 如何找到程序的系统调用位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027013/