如果我理解正确的话,linux gdb断点现在可以通过覆盖带有'int 3'的操作码和ptracing来实现。 Ptrace并没有永远存在。在将ptrace引入内核之前,断点是如何工作的?
答案 0 :(得分:3)
我不得不反对你的假设:ptrace
几乎永远存在:
ptrace最初是在第七版Unix [ 1979 ]中实现的,并且存在 在Unix的SVr4 [ 1989 ]和4.3BSD [ 1986 ]分支中。
(来源:维基百科,'ptrace',我添加了多年)
gdb
首次发布于1986年。
就Linux而言,ptrace
自Linux 1.0以来一直是一个系统调用 - 您可以在man 2 syscalls
中找到初始版本。
(我知道这并没有回答“如何在没有ptrace的情况下进行调试”的问题,我很乐意在出现更多技术性答案后立即将其删除,但在此之前我认为这提供了一些相关的历史记录。透视图。)