【问题标题】:How can I find the places of system calls of my program?如何找到我的程序的系统调用的位置?
【发布时间】:2012-04-19 02:22:54
【问题描述】:

来自 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 命令 catch syscall。

【问题讨论】:

    标签: linux debugging strace


    【解决方案1】:

    引用“strace”手册页的错误部分:

    The -i option is weakly supported.
    

    另一个可能对您有所帮助的提示:您查看过之前的代码吗? 在系统调用之后,IP 已经指向 NEXT 指令。 所以你应该检查da49c之前的说明。

    【讨论】:

    • 它是:da498 !服务端 0x00000000 。可能是系统调用,我应该检查一下。谢谢你的回复。
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多