栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux中,在进入sys调用后,%eax中的值是什么?(不是orig_eax)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux中,在进入sys调用后,%eax中的值是什么?(不是orig_eax)

syscall条目上eax中的-38显然是ENOSYS(未实现功能),并由arch / x86 / kernel /
entry_32.S中的syscall_trace_entry放置在该位置。我想可以安全地假设它将始终存在于syscall条目中,但是如果syscall返回ENOSYS
它也可以存在于syscall出口中

就个人而言,尽管我也看到一些代码也依赖于ENOSYS,但我始终只跟踪使用ptrace时是进入系统调用还是退出。(我假设您使用的是ptrace)我猜想,如果在将进程附加到syscall时该进程恰好位于syscall中,则它将无法正常工作,但是我很幸运没有遇到这个问题。

我快速浏览了strace源,我猜想它也跟踪状态,因为有一条评论说:“我们将附加到一个已经在运行的进程中。请尝试在syscall中弄清楚该进程的状态以进行处理第一件事很好。”
然后不久,它说:“该进程在syscall中间处于睡眠状态。伪造syscall进入事件。”。

简而言之,该值不能安全地用于区分入口和出口。就是说,我不确定手动跟踪它是最好的方法,因为我真的没有任何可以肯定地告诉您使用该技术的资源。:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412518.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号