如果我理解正确,linux gdb 断点现在通过使用“int 3”覆盖操作码并在命中时进行跟踪来工作。Ptrace 并没有永远存在。在 ptrace 被引入内核之前断点是如何工作的?
问问题
337 次
1 回答
3
我不得不不同意你的假设:ptrace
几乎永远存在:
ptrace 最初是在第七版 Unix [ 1979 ] 中实现的,并且出现在 Unix 的 SVr4 [ 1989 ] 和 4.3BSD [ 1986 ] 分支中。
(来源:维基百科,'ptrace',我添加了年份)
gdb
最初的版本是在 1986 年。
就 Linux 而言,ptrace
自 Linux 1.0 以来一直是一个系统调用 - 您可以在man 2 syscalls
.
(我知道这并不能回答“你如何在没有 ptrace 的情况下进行调试”的问题,我很乐意在出现更技术性的答案后立即删除它,但在此之前我认为这提供了一些相关的历史观点。)
于 2013-10-08T11:10:39.233 回答