0

OSでどのメモリ保護機械が使用されているかを確認する方法はありますか?

あるコンピューター(ubuntu)ではセグメンテーション違反で失敗するが、別のコンピューター(RH6)では失敗しないプログラムがあります。

説明の 1 つは、OS によって使用されるメモリ保護メカニズムでした。それを見つけたり変更したりする方法はありますか?

ありがとう、

4

1 に答える 1

1

仮想メモリシステム コールLinux カーネルASLRについてもっと学びたいと思うかもしれません。

次に、 mmap および munmapシステム コール (またmprotect )の役割と使用法を調べることができます。それらは、メモリを取得するために使用されるシステムコール (たとえば、malloc&を実装するため) であり、時には(ますます役に立たない)freeのような時代遅れのシステムコールが使用されます。sbrk

gdb デバッガー (watchコマンドが便利な場合があります) とvalgrindユーティリティを使用する必要があります。straceも役立つ場合があります。

/proc疑似ファイル システムの内部も調べます。何を理解しようとする

cat /proc/self/maps

はあなたに言っています(それを実行しているプロセスについてcat)。中も見て/proc/$(pidof your-program)/maps

pmapユーティリティの使用も検討してください。

それが独自のソース コードである場合は、常にすべての警告とデバッグ情報を含めてコンパイルします。たとえばgcc -Wall -Wextra -g、コンパイラが警告を出さなくなるまで改善します。gcc (つまり 4.7) とgdb(つまり 7.4)の最新バージョンを使用します。

于 2012-06-20T17:13:53.487 に答える