2011-05-04 47 views
0

我試圖追蹤舊C代碼(不是由我寫的)中的段錯誤問題。段錯誤僅在該代碼中某些變量的地址超過32位整數限制時纔會發生。 (所以我有一個很好的主意有什麼問題,但我不知道在哪裏。)如何強制Linux在高(64位)地址空間中分配內存

所以,我的問題是:有沒有辦法強制Linux爲高地址中的進程分配內存空間?目前幾乎沒有發生段錯誤的機會,這使得調試有點困難。

我正在運行Ubuntu 10.04,內核2.6.31-23-通用戴爾inspiron 1525筆記本電腦與2GB RAM,如果這是任何幫助。

在此先感謝, 馬丁。

+1

您是否嘗試過[valgrinding](http://www.valgrind.org)問題? – 2011-05-04 20:04:52

回答

2

您可以使用mmap()系統調用分配一個匿名內存塊,您可以將它作爲參數傳遞到要將其映射的位置。

0

我會打開-Wpointer-to-int-cast-Wint-to-pointer-cast警告選項並檢查它們出現的任何警告(我相信這些警告包含在64位目標中的-Wall中)。原因很可能與此有關,只是審覈編譯器出現的警告可能比使用調試器更好。

相關問題