【发布时间】:2016-08-21 13:57:06
【问题描述】:
据我所知(我可能是错的),没有办法只在 x86-64 系统上执行 一个 指令。也许您可以执行指令后跟“ud2”操作码来触发信号——但是您必须担心指令会修改控制流并转到其他地方。
然而,如果我理解正确的话,ptrace() 系统调用有一个 SINGLESTEP 选项,它只执行一条指令。这是如何实施的?我无法想象内核有某种反汇编程序来识别指令及其原因。那么,它使用了某种我不知道的架构特性吗?还是完全不同的东西?
【问题讨论】:
-
我不是最新的,但陷阱标志 (TF) 不再是一个东西吗?
-
不,我只是不知道!
标签: linux assembly x86 x86-64 ptrace