2016-08-17 48 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

相关问题