我正在尝试追踪旧C代码中的段错误问题(不是由我编写的)。如果该代码中某些变量的地址超过32位整数限制,则仅发生段错误。 (所以我很清楚出了什么问题,但我不知道在哪里。)
所以,我的问题是:有没有办法强制linux为高地址空间中的进程分配内存?目前,是否发生了段错误,这几乎是偶然的,这使调试变得有点困难。
如果有任何帮助,我在配备2GB内存的Dell inspiron 1525笔记本电脑上运行Ubuntu 10.04,Kernel 2.6.31-23-generic。
提前致谢, 马丁。
答案 0 :(得分:2)
您可以使用mmap()
系统调用分配一个匿名内存块,您可以将其作为参数传递到您想要映射的位置。
答案 1 :(得分:0)
我会打开-Wpointer-to-int-cast
和-Wint-to-pointer-cast
警告选项并查看他们发出的任何警告(我相信这些警告包含在64位目标的-Wall
中)。原因很可能与此相关,只是审核编译器出现的警告可能比使用调试器更好。