2

저는 재미있는 자신 만의 작은 사용자 모드 디버거를 작성하고 있습니다. PE 헤더에 지정된 진입 점이 main() 프로그램 정의가 아니라는 것을 알고 있습니다. (Microsoft C++ 런타임이 걱정되는 한)C++ 진입 점 -> main()

이 엔트리 포인트 사이에서 발생하는 호출에 대한 문서는 어디에서 찾을 수 있습니까? , 실제 main() 함수가 될 때까지 그리고 호출 된 이유와 함수는 무엇을할까요?

+0

매우 구체적인 구현입니다. 어떤 플랫폼? 컴파일러? –

+0

Visual Studio 2010, Pe32 + 형식 창 7 x64 – Lynn

+0

다음과 같은 옵션이 있으므로 런타임 내부 구성이므로 디버깅/해체 또는 해커를 통한 검색 (좋은 의미에서) 리소스가 있습니다. – Andrey

답변

2

수 없습니다. 사실 메인이 존재하지 않을 수도 있습니다. 예 : 링커에서 사용하는 기본 CRT 진입 점을 무시할 수 있으며 CRT 시작 기능 등으로 인라인 될 수 있습니다.

+0

그의 질문은 진입 점과 시작 기능 사이에서 실제로 일어나는 것 같아요. '메인'에 관한 것이 아닙니다. – Andrey

0

AFAIK 통화 등 코드의 동작은 소스 코드 자체.

커서를 먼저 main에 놓고 디버거 "여기를 실행하십시오"를 사용하십시오. 또는 거기에 중단 점을 설정하십시오. 그런 다음 호출 스택에서 호출을 검사하십시오.

건배 & HTH.는 CRT에 대한

1

소스 코드는 비주얼 스튜디오와 함께 제공됩니다.

C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src 

실제 main()crt0.c에 있습니다에 예를 들어, 비주얼 스튜디오 2010 기본 설치 위치, 그것은이다.

CRT (정적, DLL, MT, x86, x64 등)의 종류는 CRTDLL, _M_IA64 등과 같은 일부 정의에 의해 제어됩니다. 파고들 때를보실 수 있습니다.

관련 문제