更改linux内存保护

更改linux内存保护,linux,memory-management,Linux,Memory Management,有没有办法检查操作系统使用了哪种内存保护机制 我有一个程序由于分段错误而失败,在一台计算机上(ubuntu),但在另一台计算机上(RH6)却没有 解释之一是操作系统使用的内存保护机制。 我有办法找到/改变它吗 谢谢,您可能想了解更多关于、 然后您还可以研究系统调用的角色和用法。它们是用于检索内存的系统调用(例如,实现malloc和free),有时使用过时的系统调用,如sbrk(这越来越无用) 您应该使用gdb调试器(它的watch命令可能很方便)和实用程序。也可能是有用的 还可以查看伪文件系统内

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

我有一个程序由于分段错误而失败,在一台计算机上(ubuntu),但在另一台计算机上(RH6)却没有

解释之一是操作系统使用的内存保护机制。 我有办法找到/改变它吗


谢谢,

您可能想了解更多关于、

然后您还可以研究系统调用的角色和用法。它们是用于检索内存的系统调用(例如,实现
malloc
free
),有时使用过时的系统调用,如
sbrk
(这越来越无用)

您应该使用
gdb
调试器(它的
watch
命令可能很方便)和实用程序。也可能是有用的

还可以查看伪文件系统内部。试着去理解什么

cat /proc/self/maps
正在告诉您(关于运行
cat
的进程)。还可以查看
/proc/$(程序的PID)/maps

还可以考虑使用该实用程序


如果它是您自己的源代码,请始终使用所有警告和调试信息编译它,例如,
gcc-Wall-Wextra-g
,并对其进行改进,直到编译器不发出任何警告为止。使用最新版本的
gcc
(即4.7)和
gdb
(即7.4)。

程序是用c编写的吗?因为glibc可能也会这样做。为什么不修复程序以停止尝试访问它不拥有的内存呢?您可以尝试使用gdb,看看它在哪里失败(但在编译程序时必须启用调试信息)。