2015-04-22 55 views
3

在我的C++项目中,我遇到了一个很奇怪的问题。它与退出码11崩溃时,我删除某个日志语句(cout)。当我删除cout语句时,为什么我的C++程序崩溃并退出代码11?

This answer指向与下面的语句说明退出码11(实际上EAGAIN)来源:

系统缺乏必要的资源来创建另一个线程,或 的系统强加的限制总一个进程中的线程数量 PTHREAD_THREADS_MAX将被超出。

但我很确定不要在我的代码中创建任何额外的线程(至少不是明确的)。那么为什么会发生错误,为什么当我使用日志语句时会消失?

仅供参考,我会后的代码,但它完全是当然的断章取义,基本上是唯一的相关行是一个与日志语句。

PayloadRegionMapper(string mappingTechniqueName, string configPath = "") 
    : payload(PAYLOAD), config(Config(configPath)) { 

    cout << "construct PayloadRegionMapper" << endl; // if commented out, my program crashes.... 

    frames = generateFrames(); 
    setMappingTechnique(mappingTechniqueName); 
} 
+0

当你附加一个调试器时你会得到什么? –

+0

运行内存检查程序,就像valgrind –

+1

您是否尝试用另一个语句替换'cout'?那是'std :: cout'吗? – Carcigenicate

回答

0

使用调试器运行程序,然后在发生崩溃时回溯。 使用bt和frame命令可以了解在崩溃情况下程序的行为。

gdb <executable> 

.....<crash happened> 

bt 
<It will give you the stack frame > 

frame <frame number> 

Then look for the values and memory area there. 
相关问题