是的,有一个架构的单步标志.从内核返回到用户空间使内核有机会同时设置RIP/RFLAGS,因此它可以为用户空间设置单步,而无需在内核指令上触发.
出于某种原因,Trap Flag有自己的维基百科文章!另见维基百科的EFLAGS文章.
有关所有这些内容的英特尔架构手册的链接,请参阅x86标签wiki.
也许您可以执行"ud2"操作码后面的指令来触发信号
然后你需要代码来确定解码x86指令长度.并且您不会使用ud2
,您将使用int3
为此目的而存在的.
IIRC,还有调试寄存器,可以在不修改代码的情况下设置硬件断点.