Точка входа в C ++ -> main () - PullRequest
       41

Точка входа в C ++ -> main ()

2 голосов
/ 14 сентября 2011

Я пишу свой собственный маленький отладчик пользовательского режима для развлечения.Я знаю, что точка входа, указанная в PE-заголовке, не относится к программам, определенным как main () (в любом случае, в зависимости от времени выполнения Microsoft C ++)

Где найти документацию о вызовах, которые происходят междуточка входа, вплоть до самой функции main (), и почему они вызываются, и что они делают?

Ответы [ 3 ]

2 голосов
/ 14 сентября 2011

Вы не можете.На самом деле главное может не существовать.Например: вы можете переопределить точку входа CRT по умолчанию, используемую компоновщиком, главное можно встроить в функцию запуска CRT и т. Д ...

1 голос
/ 18 сентября 2011

Исходный код для 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, _M_IA64 и более.Вы увидите, когда будете копать.

0 голосов
/ 14 сентября 2011

AFAIK вызовы и т. Д., Действие кода не задокументировано, кроме как самим исходным кодом.

Поместите курсор первым в main и используйте отладчик «run to here».Или установите точку останова там.Затем просто проверьте вызовы в стеке вызовов.

Cheers & hth.,

...