如何在 Visual Studio 中查找应用程序的入口点 (C++)

How to find an application's entry point in Visual Studio (C++)

本文关键字:入口 C++ 应用程序 查找 Visual Studio      更新时间:2023-10-16

这个问题可能适用于在Visual Studio中编写的任何编程语言,但我更关心的是c++。

是否有一种方法可以轻松确定Visual Studio中的应用程序入口点?

对于一个相对较小的应用程序,这可能很容易,但对于大型应用程序,这将是相当困难的。在我的特殊情况下,我知道设置为启动的项目是具有入口点的项目,但我无法找到它,即使应用程序启动并运行良好。

如果你想找到可执行的c++项目,请在所有*.vcxproj文件中搜索<ConfigurationType>Application</ConfigurationType>

如果您在此应用程序中寻找入口点函数,则搜索main, wmainWinMain函数。

也可以用/ENTRY参数重新定义入口点,因此您可以检查Configuration Properties > Linker > Advanced > Entry Point项目参数或在*.vcxproj中搜索/ENTRY

在c++中,一个完全编译的程序只能有一个已定义的main方法。如果有多个,编译器将报错"main的多个定义"或其他类似的消息。

因此,最简单的选择是搜索符号main(或者,如果作为Windows子系统程序编译,则为WinMain),并找出哪些与"启动"项目对应。即使在一个相对较大的解决方案中,也不应该有那么多。

当想要停止在main/WinMain函数的顶部执行,而在Windows上交互式调试进程时,我通常只使用F10/F11(假设Visual Studio IDE中默认的C/c++键绑定)来指示调试器执行单步(启动进程,然后执行步骤,然后中断)。

注意,这可能并不总是做你想要的。如果你想捕获全局初始化、对象构造等,这些在mainWinMain之前就已经完成了。这些需要在crt源代码中为真实的全局启动代码(最终调用mainWinMain)进行额外的调试和设置断点。但是,如果您只是想在一个用调试符号构建的程序的主条目上中断,这可能是最简单的方法。