我在想,如果从内核(Linux的在这种情况下)你叫ptrace_request与PTRACE_SINGLESTEP在进程上下文(系统调用,缺页等)会发生什么。它会单步执行用户空间指令还是内核空间指令?我意识到,ptrace只能单步执行用户指令,这就是为什么我对这会产生的行为感到好奇。Ptrace从进程上下文中的单步执行内核?
只是提供多一点信息,我试图从一个页面故障处理程序这样做(单步产生故障的指令,但改变PTE地,指令经过)。我想知道这是否甚至有可能,或者如果它需要另一种方法来做到这一点,例如重新安排进程运行等等......
这是因为进程的task_struct(如果被抢占)仍然会指向内核空间处理程序IIRC,因此单步执行ptrace会绕过这一步并执行正确的用户空间指令,或者完全不执行该操作?