2009-09-04 3 views
0

MFC와 함께 EVC++ 4.0 SP4를 사용하여 작성한 Windows Mobile 4.0 응용 프로그램이 있는데,이 프로그램은 필드에 임의의 비정상적인 충돌이 발생하는 경우에 사용합니다. 예 : Exception ox800000002 at 00112584. 다양한 에뮬레이터 및 시뮬레이터에서는 발생하지 않으므로 디버거를 사용하여 추적하기가 매우 어렵습니다. 크래시가 발생하고 주소 및 예외 유형이 표시됩니다. PDB를 가지고 있다면이 주소를 출처로 추적 할 수있는 방법이 있습니다. VC++ 8을 사용하여 다시 컴파일 할 수 없습니다. 모바일 4 SDK를 지원하지 않기 때문입니다.Window CE의 충돌로 인한 주소에서 소스 코드 위치를 찾으려면 어떻게합니까?

제 생각에 스택 추적이 없으면 예외가 내 소스에 없을 수도있는 가능성이 있기 때문에 많은 기쁨을 얻지 못할 것입니다. 한 번해볼 만하다.

편집 제안한대로 프로그램의 .MAP 파일 컨텍스트에서 주소를 확인했습니다. 이 오류를 제안 다음

Address   Publics by Value    Rva+Base  Lib:Object 

0001:00000000  [email protected]@[email protected]  00011000 f 7Par.obj 
' 
' 
' 
0001:001124b8  [email protected]@@[email protected]@[email protected]@[email protected] 0b8 f gxseldrg.obj 
0001:001126d8  [email protected]@@[email protected]@[email protected] 0d8 f gxseldrg.obj 

내가시를 누르면 마우스/키보드/화면 버튼이 생각하지 않는 조금 이상한 것 같다 CGXGridUserDragSelectRangeImp :: OnLButtonUp() 중에 발생한 보여준다. 크래시가보고되기 전에 스택이 깨져서 시간 낭비 일 수 있습니다. 나는 어셈블러 출력을 재 컴파일하여 주어진 라인에 격리 시키려고하지만 많은 희망을 가지지 않는다 : (

맵 파일이 세그먼트 화 된 주소 (예 : 0001 : xxxxxxxxx)를보고하고 충돌 보고서가 세그먼트 화되지 않았다는 사실 주소는 충돌 주소에서지도 주소를 가져 오려면 일부 계산을 수행해야한다는 뜻입니까?

답변

0

Visual Studio 8에서 Windows Mobile 6에 대해 다시 컴파일하고 디버거에서 실행할 수 있습니다. 충돌이 발생하지만 이상적이지 않습니다.

관련 문제