2013-07-05 4 views
0

나는 프로그램을 작성 중이며 지난 며칠 동안 잘 작동합니다. 오늘 그것을 실행하면이 Unhandled exception at 0x7770efc8 in LHM.exe: 0xC0000005: Access violation writing location 0x00440f48.MFC 처리되지 않은 예외

ntdl.dll을 보여줍니다! 아래의 호출 스택에서 7770fb12()
를,이 프레임 아래에 잘못된 및/또는 행방 불명이 될 수 있음을 나타냅니다, 어떤 기호는 NTDLL.DLL로드하지 않습니다.

그리고 ntdl.dll을 발견했습니다! 7770fb12()가 7770FB12 push esi 인 디스 어셈블리입니다.

어쨌든이 문제를 해결할 수 있습니까?

+0

필요 ... 자세히 ... 컨텍스트 ... –

+0

문제가 발생한 곳의 소스 코드를 게시해야합니다. –

+1

@RogerRowland 그의 스택이 손상된 것 같아서 그가 모르는 내기를 하겠어. 가장 좋은 방법은 그것을 디버깅하여 액세스 위반이 발생한 시점을 확인하거나 버퍼에 부적절하게 쓰는 부분을 찾아 보는 것입니다. –

답변

2

코드 스택에 호출 위치가 표시되지 않아 결국 ntdll.dll로 이어지는 경우에도 대부분의 경우 처음부터 코드를 단계별로 실행하여 호출을 정확히 찾아 낼 수 있습니다. 코드가 너무 크면 중단 점을 임의로 설정하고 연속적으로 범위를 좁히십시오.

이것은 매우 기본적이고 어쩌면 원유 디버깅 절차이지만

0

가 '잘못 될 수 아래 프레임'확실히 손상 스택의 기호 아니지만 ... 많이 날 수 있습니다. MS 서버에서 ntdll에 대한 공용 기호를로드하면 쉽게 해결할 수 있습니다 (IDE에서 쉽게 완료 - 예를 들어 '모듈'창에서 ntdll을 마우스 오른쪽 단추로 클릭).

더 깊은 다이빙은 here입니다.