复杂VC项目的启动点在哪儿,即入口函数

lasthope 2012-08-31 10:03:56
我下了个开源的VC项目,想从main函数调试,不想他好像不是main开始的,请问如何找到入口函数啊;
main函数前面有很多的代码,是否有些静态的变量或者函数在main之前就运行了呢,还是微软包装了main函数呢。
好像没有用到那个包装的WinMain函数。
启动后调试堆栈如下:
logfunctions::logfunctions() line 262
$E27() line 88 + 13 bytes
$E30() + 8 bytes
_initterm(void (void)* * 0x0051c004 $S31, void (void)* * 0x0051c0a8) line 525
_cinit() line 192 + 15 bytes
mainCRTStartup() line 205
KERNEL32! 7c817077()
...全文
268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tbg1986tbg 2012-09-03
  • 打赏
  • 举报
回复
InitInstance
whucv 2012-09-02
  • 打赏
  • 举报
回复
静态的变量或者函数在main之前就分配空间了。
main
WinMain
或者封装的MFC为App类的InitInstance
w_xei 2012-09-01
  • 打赏
  • 举报
回复
是否是一个服务,或者DLL,没有启动函数;如果是EXE从VC的mainCRTStartup()开始调试进入自己的代码就知道进入点了
dickbarry 2012-09-01
  • 打赏
  • 举报
回复
X:\Program Files\Microsoft Visual Studio Ver\VC\crt\src\crt0.c

X为VS安装目录、Ver为版本VS08对应9.0

在这个文件中找到mainCRTStartup(),加断点,F11进去就找到main函数了
Eleven 2012-08-31
  • 打赏
  • 举报
回复
mainCRTStartup/wmainCRTStartup()会调用main/wmain()入口函数,在调用入口函数之前会初始化所有全局和静态C++类对象的构造函数。

一般你直接在main函数里设置断点,然后F10,F11单步执行看看程序执行流程。
Gloveing 2012-08-31
  • 打赏
  • 举报
回复
程序默认的入口函数是mainCRTStartup(void) /wmainCRTStartup(void)/WinMainCRTStartup(void)/wWinMainCRTStartup(void).
http://topic.csdn.net/u/20100310/23/aec847fe-c262-4a0d-a6db-0c00b1f06646.html
mainCRTStartup
傻X 2012-08-31
  • 打赏
  • 举报
回复
一般是BOOL XXXXApp::InitInstance()这里开始的

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧