2011-05-04 2 views
0

오래된 C 코드의 segfault 문제를 추적하려고합니다. 세그 폴트는 해당 코드의 특정 변수 주소가 32 비트 정수 제한을 초과하는 경우에만 발생합니다. (그래서 나는 잘못된 정보를 얻었지만 잘 모르겠다.)리눅스가 높은 (64 비트) 주소 공간에 메모리를 할당하도록하는 방법

내 질문은 : 리눅스가 높은 주소의 프로세스를 위해 메모리를 할당하도록 강제하는 방법이 있는가? 공간? 디버깅을 약간 어렵게 만드는 segfault가 발생했는지 여부는 현재 상황에 따라 크게 다릅니다.

저는 2GB RAM이 장착 된 Dell Inspiron 1525 랩톱에서 우분투 10.04, 커널 2.6.31-23- 제네릭을 실행하고 있습니다. 도움이된다면.

미리 감사드립니다. Martin.

+1

[valgrinding] (http://www.valgrind.org)에서 먼저 문제를 시도해 보셨습니까? –

답변

2

mmap() 시스템 호출로 익명 메모리 블록을 할당 할 수 있습니다. 익명 블록은 매핑하려는 인수로 전달할 수 있습니다.

0

-Wpointer-to-int-cast-Wint-to-pointer-cast 경고 옵션을 켜고 경고 메시지가 표시되는지 확인합니다 (64 비트 대상에서는 -Wall에 포함되어 있음). 원인은 이와 관련이있을 가능성이 매우 높기 때문에 컴파일러가 표시하는 경고를 감사하는 것이 디버거를 사용하는 것보다 나은 접근 방법 일 수 있습니다.

관련 문제