0

私の理解が正しければ、Linux gdb ブレークポイントは、オペコードを「int 3」で上書きし、それらがヒットしたときに ptrace することで機能するようになりました。Ptrace はずっと存在しているわけではありません。ptrace がカーネルに導入される前は、ブレークポイントはどのように機能していましたか?

4

1 に答える 1

3

私はあなたの仮定に反対しなければなりません:ptrace実質的に永遠に存在しています:

ptrace は、Seventh Edition Unix [ 1979 ] で最初に実装され、Unix の SVr4 [ 1989 ] と 4.3BSD [ 1986 ] ブランチの両方に存在しました。

(ソース: ウィキペディア、「ptrace」、年を追加)

gdbの最初のリリースは 1986 年でした。

Linux に関する限り、ptraceは Linux 1.0 以降の syscall です。初期バージョンは にありman 2 syscallsます。

(これは「ptraceなしでどのようにデバッグしますか」という質問には答えないことを認識しており、より技術的な回答が得られたらすぐにこれを削除しますが、それまでは関連する歴史的視点を提供すると思います。)

于 2013-10-08T11:10:39.233 に答える