C++ C++;入口点->;main()

C++ C++;入口点->;main(),c++,windows,visual-studio-2010,windows-7,portable-executable,C++,Windows,Visual Studio 2010,Windows 7,Portable Executable,为了好玩,我正在编写自己的小用户模式调试器。我知道PE头中指定的入口点不是程序定义的主程序((无论如何,只要微软C++运行时是))< /P> 我在哪里可以找到一些关于在这个入口点之间发生的调用的文档,直到实际的main()函数,以及调用它们的原因和它们的作用?您不能。事实上,main可能不存在。例如:您可以覆盖链接器使用的默认CRT入口点,main可以内联到CRT启动函数中,等等。如果调用等,代码的操作除了源代码本身之外没有记录 首先将光标放在main中,并使用调试器“运行到此处”。或者在那里设

为了好玩,我正在编写自己的小用户模式调试器。我知道PE头中指定的入口点不是程序定义的主程序((无论如何,只要微软C++运行时是))< /P>
我在哪里可以找到一些关于在这个入口点之间发生的调用的文档,直到实际的main()函数,以及调用它们的原因和它们的作用?

您不能。事实上,main可能不存在。例如:您可以覆盖链接器使用的默认CRT入口点,main可以内联到CRT启动函数中,等等。

如果调用等,代码的操作除了源代码本身之外没有记录

首先将光标放在
main
中,并使用调试器“运行到此处”。或者在那里设置一个断点。然后检查调用堆栈中的调用


Cheers&hth.,

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
\u M_IA64
等。当您深入研究时,您将看到。

高度特定于实现。什么站台?编译器?Visual studio 2010,Pe32+格式windows 7 x64它是运行时内部构件,因此您可以选择以下选项:调试/反汇编或搜索黑客(从良好意义上讲)资源。我无法回答您的问题,但我标记了它,以便它可能更容易得到答案。这是一篇关于GCC在启动时所做工作的好文章。还可以查看MSVC附带的crt源代码,尤其是
crt0.c
。我想他的问题实际上是入口点和启动函数之间发生了什么,而不是关于
main