以前、単純な MMU を備えた組み込みシステムで作業していたとき、私はこの MMU を動的にプログラムしてメモリの破損を検出していました。
たとえば、実行時のある時点で、foo 変数が予期しないデータで上書きされました (おそらく、ダングリング ポインターなどによって)。だから私は追加のデバッグコードを追加しました:
- 初期化時に、foo によって使用されるメモリが禁止領域として MMU に示されました。
- foo が意図的にアクセスされるたびに、リージョンへのアクセスが直前に許可され、直後に禁止されました。
- マスターと違反の原因となったアドレスをダンプするために、MMU irq ハンドラが追加されました。
これは実際にはある種のウォッチポイントでしたが、コード自体によって直接自己処理されました。
ここで、同じトリックを x86 プラットフォームで再利用したいと思います。問題は、このプラットフォームで MMU がどのように機能しているか、Linux でどのように使用されているかを理解するにはほど遠いことですが、この問題に対処するためのライブラリ/ツール/システム コールが既に存在するかどうか疑問に思っています。
Valgrind や GDB など、メモリの問題を管理するさまざまなツールが存在することは承知していますが、私の知る限り、これらのツールはデバッグされたコードによって動的に再構成することはできません。
私は主に Linux でのユーザー空間に興味がありますが、カーネル モードや Windows での情報も大歓迎です!