Pre Ptrace是Linux gdb断点是如何工作的



如果我理解正确的话,Linux gdb 断点现在的工作原理是用"int 3"覆盖操作码并在命中操作码时进行跟踪。Ptrace并不是永远存在的。在将 ptrace 引入内核之前,断点是如何工作的?

我不得不不同意你的假设:ptrace几乎永远存在:

ptrace在第七版Unix[1979]中首次实现,并且存在 在 Unix 的 SVr4 [1989] 和 4.3BSD [1986] 分支中。

(来源:维基百科,"ptrace",我添加了年份(

gdb的首次发布是在1986年。

就 Linux 而言,自 Linux 1.0 以来,ptrace一直是系统调用 - 您可以在 man 2 syscalls 中找到初始版本。

(我知道这并不能回答"如何在没有 ptrace 的情况下进行调试"的问题,一旦出现更具技术性的答案,我很乐意删除它,但在此之前,我认为这提供了一些相关的历史视角。

最新更新