2

我正在編寫我自己的小用戶模式調試器,以獲得樂趣。我知道在PE頭中指定的入口點不是定義main()的程序(就微軟的C++運行時而言)無論如何,C++入口點 - > main()

我在哪裏可以找到一些有關這個入口點之間發生的調用的文檔,直到實際的main()函數,爲什麼被調用,以及它們做了​​什麼?

+0

高度實現特定。什麼平臺?編譯器? –

+0

Visual Studio 2010,Pe32 +格式窗口7 x64 – Lynn

+0

它是運行時內部的,因此您有以下選項:調試/反彙編或搜索黑客(正確的)資源。 – Andrey

回答

2

你不能。實際上主要可能不存在。例如:您可以覆蓋鏈接器使用的默認CRT入口點,主可以內聯到CRT啓動功能中,等等。

+0

我猜他的問題確實是入口點和啓動函數之間發生的事情,它並不是真的關於'main'。 – Andrey

0

AFAIK調用等等,代碼的動作沒有記錄由源代碼本身。

將光標放在main中,並使用調試器「run to here」。或者在那裏設置一個斷點。然後檢查調用堆棧中的調用。

乾杯&第h。,

1

用於CRT的源代碼來使用Visual Studio。例如,對於Visual Studio 2010的默認安裝位置,它在:

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

實際main()crt0.c

不同類型的CRT(靜態,DLL,MT,x86,x64等)受某些定義控制,如CRTDLL,_M_IA64等。你會看到你什麼時候進入。