2013-07-20 24 views
1

在进入main()函数之前程序崩溃/退出的原因是什么?我的程序在进入main()函数之前退出

我正在正常运行的项目上工作。我添加了一些使用boost线程的代码,我更新了makefiles(CMakeLists.txt),并且所有内容都编译和链接,没有问题。

当我启动可执行文件时,我得到的只是提示符。

要检查程序是否开始执行某些操作,我在main()中添加了cerr << "TEST" << endl作为第一条指令,并且不打印任何内容。

当然,当我尝试打印该字符串没有线程创建,但。

在main()的开头放置一个断点是没用的。

系统:
Windows 7中,MinGW的,海湾合作委员会,CMake的

+1

代码是什么? – Rapptz

+1

你可能要使用'gdb' :) – spinus

+1

最有可能的原因是在一些静态初始化或尝试加载未找到的DLL。 –

回答

4

这个问题可能是在一些全球一流varible的构造。他们将在main之前被呼叫。

0

另一种可能的情况是输出已经被缓存,并且输入main后出现进程崩溃,请在输出行之后在这里添加flush输出,或者您可以重新打印1000次以确保它不会被缓存。

在这种情况下,简单的方法是在调试器中运行它,它会缓存错误。

+2

'cerr'通常是无缓冲的,因为这个原因。在任何一种情况下,endl都应该刷新数据流,然后发送消息并输出(禁止整个操作系统崩溃)。 – cHao

相关问题