Pre Ptrace linux gdb断点是如何工作的?

时间:2013-10-08 03:49:59

标签: linux assembly gdb breakpoints ptrace

如果我理解正确的话,linux gdb断点现在可以通过覆盖带有'int 3'的操作码和ptracing来实现。 Ptrace并没有永远存在。在将ptrace引入内核之前,断点是如何工作的?

1 个答案:

答案 0 :(得分:3)

我不得不反对你的假设:ptrace几乎永远存在:

  

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

(来源:维基百科,'ptrace',我添加了多年)

gdb首次发布于1986年。

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

(我知道这并没有回答“如何在没有ptrace的情况下进行调试”的问题,我很乐意在出现更多技术性答案后立即将其删除,但在此之前我认为这提供了一些相关的历史记录。透视图。)