문제

이상한 프로그램을 끊고,이것은 무엇을 의미합에 디버깅?

를 부착한 후에 windbg 내가 찾은 다음과 같다:

(1714.258): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=015b5c74 ebx=178a13e0 ecx=dddddddd edx=009a8ca0 esi=09fbf698 edi=09fbf594
eip=005ae2f7 esp=09fbf4a4 ebp=09fbf594 iopl=0         nv up ei ng nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010286
TestApplication!std::_Container_base::_Orphan_all+0x57:
005ae2f7 c70100000000    mov     dword ptr [ecx],0    ds:0023:dddddddd=????????

호출 스택:

TestApplication!std::_Container_base::_Orphan_all+0x57
TestApplication!std::vector >::operator=+0x37
TestApplication!boost::asio::detail::win_iocp_io_service::do_one+0x189
TestApplication!boost::asio::detail::win_iocp_io_service::run+0xa2
TestApplication!boost::asio::io_service::run+0x3a
도움이 되었습니까?

해결책

문제

  1. 첫 번째 예외는 디버거를 주는,사람을 사용하여 디버거,첫 번째 기회를 디버깅을 제외하기 전에,그것은 그것을 발생시에 프로그램을 처리하는 문제입니다.

  2. 이 경우에는 예외입니다"액세스 위반".즉,프로그램이 노력하고 읽기/쓰기에서 불법적인 메모리 위치에 있습니다.

  3. 액세스 위반이 심각한 사촌 될 수 있는 손상을 몇 가지 메모리에 있어서 중요한 사항입니다 당신의 프로그램이 가능한 이유는 당신의 프로그램에 대한 액세스를 제공합니다.

  4. 에 오류가 지시는 것은 당신이 얻을하려고하는 내용 4 바이트 값에서는 불법이다.

문제를 디버깅

  1. 이 코드는 다음을 쉽게 할 수 있는 디버그에 이 문제를 설정하여 디버그 상징하는 위치에 출력하는 폴더의 컴파일러(이 포함되어 있는 관련 pdb 파일)

  2. 를 얻을 때 당신은 이 예외를 얻을 호출 스택(하나의 보 windows 것)

  3. 이것은 당신을 보여 위치 코드에서는 오류가 발상지입니다.

  4. 지금 들어 있는 파일을 열고 이 소스 및 중단점을 설정과 프로그램의 이점과 중지 내부 windebugger.디버그에서 이 시점을 정확히 알고 있는 코드의 라인이 위반을 던진

팁:부스트와 함께 제공원할 수 있도록 쉽게 휴식을 넣어 포인트 내부 이 코드입니다.을 누르십시오 F11 디버깅하는 동안 얻을 때 asio::세부사항::win_iocp_io_service::do_one.

다른 팁

MSVC 및 디버그 빌드 구성을 사용하는 경우 0xdddddddd 일반적으로 해방 된 메모리에 액세스하려고한다는 것을 의미합니다. Debug CRT 메모리 관리자는 무료 메모리를 채 웁니다 0xdd.

ECX 레지스터에는 잘못된 주소 (DDDDDDDD)가 있습니다. 나는 이것이 기억 부패의 경우라고 제안합니다. 프로세스를 위해 GFLAG를 켜는 것을 고려하십시오.

Callstack은 전적으로 STL/BOOST 코드입니다. 당신이하고있는 일이 평범하지 않은 한, 버그가 당신이 붙여 넣은 콜 스택의 어느 부분에 있다고 가정하지 않을 것입니다.

확인해야 할 몇 가지 사항 :

  1. 정의해야하지만 정의 해야하는 부스트 특정 #defines가 있습니까?

  2. SCL 및 반복자 디버깅을 보호하십시오. 활성화/비활성화를 시도하십시오.

  3. 디버그 및 릴리스 코드를 믹싱하고 있습니까? (STL/부스트 컨테이너를 사용한 나쁜 생각)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top