2016-08-17 2106 views
1

該問題可能適用於用Visual Studio編寫的任何編程語言,但我更關心C++。如何在Visual Studio中找到應用程序入口點(C++)

有沒有一種方法可以輕鬆確定Visual Studio中的應用程序入口點?

對於一個相對較小的應用程序,這可能很容易,但對於大型應用程序來說,這將非常困難。在我的特殊情況下,我知道設置爲啓動的項目是具有切入點的項目,但我無法找到它,即使應用程序啓動並運行良好。

+0

項目的調試設置中是否沒有「停止入口點」選項? –

+0

您好@barakmanos我找不到它,您能否更具體地瞭解該選項的位置? – meJustAndrew

+0

檢查[此MSDN頁面](https://msdn.microsoft.com/en-us/library/f9t8842e.aspx),其中聲明函數'main','WinMain'和'DllMain'是三種形式的用戶定義的入口點。 –

回答

1

當想要停止執行在main/WinMain函數的頂部,同時在Windows上交互式調試進程時,我通常只使用F10/F11(假設Visual Studio IDE中的默認C/C++鍵綁定)指示調試器單步執行(啓動該過程,然後執行該步驟,然後中斷)。

請注意,這可能並不總是你想做的。如果您想要捕捉全局初始化,對象構造等,則在達到mainWinMain之前已完成這些操作。這些需要額外的調試和在CRT源代碼中爲real全局啓動代碼(最終調用mainWinMain)設置斷點。但是,如果您只是想爲使用調試符號構建的程序打破主入口,這可能是最簡單的方法。

+0

謝謝你的小加法! – meJustAndrew

2

在C++中,完全編譯的程序只能有一個定義的main方法。如果不止一個,編譯器會抱怨「主要的多個定義」或其他類似措詞的消息。

因此,最簡單的選擇是搜索符號main(或者,如果編譯爲Windows子系統程序WinMain)並找出哪些對應於「啓動」項目。即使是相對較大的解決方案,也不應該有那麼多。

+0

我只是欣賞一下我已經知道的一些東西,但我所尋找的東西更像是一種簡單的方式來實現它,而且在評論中的WhozCraig發佈了它,但非常感謝! – meJustAndrew

2

如果您想查找所有*.vcxproj文件中搜索的<ConfigurationType>Application</ConfigurationType>可執行的C++項目。

如果您正在尋找此應用程序內的入口點功能,則需要搜索mainwmainWinMain函數。

此外,還可以使用/ENTRY參數重新定義入口點,因此您可以在*.vcxproj中檢查Configuration Properties > Linker > Advanced > Entry Point項目參數或搜索/ENTRY

+0

我只是欣賞一下我已經知道的一些東西,但我所尋找的東西更像是一種簡單的方式來實現它,而且WhozCraig在評論中發佈了它,但非常感謝! – meJustAndrew

+0

@meJustAndrew正確,但是如果調試無法啓動,您將可以使用其他方法。 – Nikita

相關問題