我在想,如果從內核(Linux的在這種情況下)你叫ptrace_request與PTRACE_SINGLESTEP在進程上下文(系統調用,缺頁等)會發生什麼。它會單步執行用戶空間指令還是內核空間指令?我意識到,ptrace只能單步執行用戶指令,這就是爲什麼我對這會產生的行爲感到好奇。Ptrace從進程上下文中的單步執行內核?
只是提供多一點信息,我試圖從一個頁面故障處理程序這樣做(單步產生故障的指令,但改變PTE地,指令經過)。我想知道這是否甚至有可能,或者如果它需要另一種方法來做到這一點,例如重新安排進程運行等等......
這是因爲進程的task_struct(如果被搶佔)仍然會指向內核空間處理程序IIRC,因此單步執行ptrace會繞過這一步並執行正確的用戶空間指令,或者完全不執行該操作?