firemail
标题:
Log4cpp多线程崩溃
[打印本页]
作者:
Qter
时间:
2023-5-22 19:42
标题:
Log4cpp多线程崩溃
log4cpp使用多线程运行几分钟后出现崩溃,网上查找资料,找到解决办法,记录下
void OstreamAppender::_append(const LoggingEvent& event) {
(*_stream) << _getLayout().format(event);
if (!_stream->good()) {
// XXX help! help!
}
}
上图标记位置为崩溃地方,源文件为OstreamAppender.cpp,源码作者很有意思,用help来暗示,应该是 “oprater<<” 函数引起崩溃,这个函数是系统函数,查看format()这个函数。由于使用的是OstreamAppender + PatternLayout的形式,函数使用在PatternLayout.cpp文件中:
std::string PatternLayout::format(const LoggingEvent& event) {
std:
stringstream message;
for(ComponentVector::const_iterator i = _components.begin();
i != _components.end(); ++i) {
(*i)->append(message, event);
}
return message.str();
}
将此行修改为:
std::string PatternLayout::format(const LoggingEvent& event) {
std:
stringstream message;
for(ComponentVector::const_iterator i = _components.begin();
i != _components.end(); ++i) {
(*i)->append(message, event);
}
//return message.str();
return std::string(message.str()); // modiffy dump Here!
}
经过验证,崩溃解决!
————————————————
版权声明:本文为CSDN博主「Word哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/finghting321/article/details/102939339
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3