2011-12-09 3 views
1

wince 5.0 arm 장치 에뮬레이터에서 프로그램을 실행하는 동안 항상 데이터 불일치가보고됩니다. 예외는 다음과 같습니다.wince 데이터 정렬 불일치

Data Abort: Thread=8db5e6f4 Proc=8c24cb60 'test.exe' 
AKY=00001001 
PC=03f91cfc(coredll.dll+0x00021cfc) 
RA=1a12a988(test.exe+0x0011a988) 
BVA=0000001e 
FSR=00000001 

지도 파일에 따르면 PC는 기능이 CeHeapCreate()입니다. 반환 주소는 코드 섹션에 없거나 힙에있을 수 있습니다. 메모리 문제를 감지하기 위해 응용 프로그램 확인 프로그램을 실행할 때 데이터 중단이 사라지고 프로그램이 정상적으로 실행됩니다. 이 오류의 원인과이 사건을 디버깅하는 방법은 무엇입니까?

답변

1

우리는 test.exe가 작성한 coredll을 호출해야합니다. 반송 주소 (RA)는 앱이 어디에서 왔는지 알려줍니다. decode it back to a line of code입니다. WAG는 정렬되지 않은 API 호출에 구조체 또는 바이트 배열을 전달하는 것입니다. 다시 말하지만 코드가 없으면 추측 할 수 있습니다.

+0

코드 섹션과 데이터 섹션의 총 길이는 약 0xB0000입니다. 그래서 RA 0x11a988은 그 주소 공간을 넘습니다. 일부 코드를 변경하면 데이터 중단이 잠시 사라질 수 있지만 다른 장소에서 다시 표시 될 수 있습니다. – Bergenst

+0

통계학은 어떨까요? 그들은 별도의 위치에 할당됩니다. – ctacke