【问题标题】:Pre Ptrace how did linux gdb breakpoints work?Pre Ptrace linux gdb 断点是如何工作的?
【发布时间】:2013-10-08 03:49:59
【问题描述】:

如果我理解正确,linux gdb 断点现在通过使用“int 3”覆盖操作码并在命中时进行 ptracing 来工作。 Ptrace 并没有永远存在。在 ptrace 被引入内核之前断点是如何工作的?

【问题讨论】:

    标签: linux assembly gdb breakpoints ptrace


    【解决方案1】:

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

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

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

    gdbs 的初始版本是在 1986 年。

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多