2012-11-07 2 views
1

에 나는 아주 이상한 행동을 발견했다.세그먼트 오류 -03이

내 프로그램이 디버그 모드에서 실행됩니다 (-g), 그것은 괜찮습니다; -O3 또는 -O2과 같이 세분화 오류가 발생합니다.

세그먼트 화는 SSE2 매크로가있는 함수를 실행할 때 발생합니다. like

_m128i polynomial = _mm_set1_epi8(0x1d) 

이것은 코드의 일부일뿐입니다.

나는 이미 16 바이트의 주소 정렬 상황을 제거했다고 생각합니다. -g 모드와 -O2 또는 -O3 모드가 다르게 동작하는 것은 매우 유선입니다.

사실, 버그가 SSE2와 관련이 있는지 여부는 확실하지 않습니다.

나는 GCC 4.4.3을 사용하고 있습니다.

같은 문제가 발생 했습니까?

또는 처리 방법에 대한 제안 사항을 제공해 주실 수 있습니까?

+0

'-g'는 "디버깅 모드"를 선택하지 않고 단지 디버그 심볼을 추가합니다. '-O3 -g' 두 가지를 모두 지정할 수 있습니다. 이렇게하면 기호로 최적화 된 코드가 생성되지만 소스 코드와 직접 1 : 1 관계가 없어 디버그 (이해)가 어려워 질 수 있습니다. '-O3'을 생략하면'-O0'을 의미합니다. 이것은 최적화되지 않은 코드를 생성합니다. 이것은 쉽게 읽을 수 있습니다. – hirschhornsalz

+0

디버거에서 프로그램을 시작하십시오. 당신은 그물에 튜토리얼의 톤을 찾을 수 있습니다. gcc를 사용한다면'gdb'가 좋은 선택 일 수 있습니다. – hirschhornsalz

답변