0

有没有办法检查操作系统使用了哪个内存保护机制?

我有一个程序因分段错误而失败,在一台计算机(ubuntu)中但在另一台计算机(RH6)中没有。

一种解释是操作系统使用的内存保护机制。有没有办法可以找到/更改它?

谢谢,

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 (ie 4.7) 和gdb(ie 7.4) 的最新版本。

于 2012-06-20T17:13:53.487 回答