如何在 Visual Studio (C++) 中找到应用程序的入口点
How to find an application's entry point in Visual Studio (C++)
这个问题可能适用于用Visual Studio编写的任何编程语言,但我更关心C++。
有没有办法轻松确定Visual Studio中的应用程序入口点?
对于相对较小的应用程序,这可能很容易,但对于大型应用程序,这将非常困难。在我的特殊情况下,我知道设置为启动的项目是具有入口点的项目,但我无法找到它,即使应用程序启动并运行良好。
在 C++ 中,一个完全编译的程序只能有一个定义的 main
方法。如果不止一个,编译器将抱怨 "multiple definitions of main" 或其他类似措辞的消息。
所以,最简单的选择是搜索符号 main
(或者,如果编译为 Windows 子系统程序,WinMain
)并找出哪些对应到 "startup" 项目。即使在相对较大的解决方案中也不应该有那么多。
如果您想查找可执行的 C++ 项目而不是在所有 *.vcxproj
文件中搜索 <ConfigurationType>Application</ConfigurationType>
。
如果您要在此应用程序中查找入口点函数,请搜索 main
、wmain
或 WinMain
函数。
也可以使用 /ENTRY
参数重新定义入口点,因此您可以检查 Configuration Properties > Linker > Advanced > Entry Point
项目参数或在 *.vcxproj
.[=19= 中搜索 /ENTRY
]
如果希望在 main/WinMain 函数顶部 停止 执行,同时在 Windows 上交互式调试进程,我通常只使用 F10/F11(假设 Visual Studio IDE 中的默认 C/C++ 键绑定)指示调试器单步执行(启动进程,然后执行步骤,然后中断)。
请注意,这可能并不总是如您所愿。如果你想捕获全局初始化、对象构造等,这些在到达 main
或 WinMain
之前就已经完成了。这些需要在 真实 全局启动代码(最终调用您的 main
或 WinMain
)的 CRT 源代码中进行额外的调试和设置断点。但是,如果您只是想在使用调试符号构建的程序的主入口处中断,这可能是最简单的方法。
这个问题可能适用于用Visual Studio编写的任何编程语言,但我更关心C++。
有没有办法轻松确定Visual Studio中的应用程序入口点?
对于相对较小的应用程序,这可能很容易,但对于大型应用程序,这将非常困难。在我的特殊情况下,我知道设置为启动的项目是具有入口点的项目,但我无法找到它,即使应用程序启动并运行良好。
在 C++ 中,一个完全编译的程序只能有一个定义的 main
方法。如果不止一个,编译器将抱怨 "multiple definitions of main" 或其他类似措辞的消息。
所以,最简单的选择是搜索符号 main
(或者,如果编译为 Windows 子系统程序,WinMain
)并找出哪些对应到 "startup" 项目。即使在相对较大的解决方案中也不应该有那么多。
如果您想查找可执行的 C++ 项目而不是在所有 *.vcxproj
文件中搜索 <ConfigurationType>Application</ConfigurationType>
。
如果您要在此应用程序中查找入口点函数,请搜索 main
、wmain
或 WinMain
函数。
也可以使用 /ENTRY
参数重新定义入口点,因此您可以检查 Configuration Properties > Linker > Advanced > Entry Point
项目参数或在 *.vcxproj
.[=19= 中搜索 /ENTRY
]
如果希望在 main/WinMain 函数顶部 停止 执行,同时在 Windows 上交互式调试进程,我通常只使用 F10/F11(假设 Visual Studio IDE 中的默认 C/C++ 键绑定)指示调试器单步执行(启动进程,然后执行步骤,然后中断)。
请注意,这可能并不总是如您所愿。如果你想捕获全局初始化、对象构造等,这些在到达 main
或 WinMain
之前就已经完成了。这些需要在 真实 全局启动代码(最终调用您的 main
或 WinMain
)的 CRT 源代码中进行额外的调试和设置断点。但是,如果您只是想在使用调试符号构建的程序的主入口处中断,这可能是最简单的方法。