2011-07-06 6 views
0

VxWorks에서 TLB (Load Word 또는 Instruction Fetch) 예외가 발생합니다. 내가 더 분석 할 때 나는 참조 된 메모리 주소가 유효한 메모리 위치를 가리 키지 않는다는 것을 이해했다.잘못된 컴파일러 옵션 사용으로 인해 TLB (로드 단어) 예외가 발생할 수 있습니까?

내가 아는 한, 일부 메모리 손상 (가능한 메모리 덮어 쓰기) 때문에이 문제가 발생할 수 있습니다. 그러나 코드 분석 및 정제중인 Windows의 동일한 코드 조각 실행에는 메모리 오류가 표시되지 않습니다.

그래서 어떤 컴파일러 옵션이이 문제를 일으킬 수 있는지 궁금합니다. 가능한가?

또한 이러한 문제를 디버깅하는 방법에 대한 모든 포인터가 있습니까?

+0

아마 정렬 문제가 있습니까? * 예를 들어, 윈도우에서 4 바이트 정렬은 괜찮지 만 vxWorks에서 8 바이트 정렬이 필요합니다. * 코드에서 캐스트를 두 번 확인하십시오. – pmg

+2

의문의 여지가 있음. 기억을 부패시키는 진술을 찾을 수 없다고해서 그것이 존재하지 않는다는 것을 의미하지는 않습니다. 다른 힙 관리자가있는 다른 운영 체제에서는 비교할 수없는 결과를 얻을 수 없습니다. –

답변

1

예, 특정 컴파일러 플래그로 컴파일 된 코드가 특정 속성으로 메모리에 액세스 할 때 특정 프로세서 아키텍처 및 TLB 예외가 발생합니다. 예 : 정렬되지 않은 데이터에 대한 정렬 된 액세스로 이어지는 컴파일러 플래그가있는 캐시되지 않은 메모리의 PowerPC.

예,하지만 추가 정보없이 "예"는 도움이되지 않습니다.