前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对于glog中ShutdownGoogleLogging后不能再次InitGoogleLogging问题的解决办法

对于glog中ShutdownGoogleLogging后不能再次InitGoogleLogging问题的解决办法

作者头像
一见
发布2018-08-10 15:53:41
1.8K0
发布2018-08-10 15:53:41
举报
文章被收录于专栏:蓝天蓝天

注:最近代码已修复此bug

https://code.google.com/p/google-glog/issues/detail?id=142

https://code.google.com/p/google-glog/source/browse/trunk/src/utilities.cc

问题原因非常简单,utilities.cc文件中的ShutdownGoogleLoggingUtilities未对全局静态变量g_program_invocation_short_name重置为NULL,下面是相关的源代码,一看便知,解决办法就是加上:g_program_invocation_short_name = NULL;一句,由于是静态的全局变量,不能在自己程序中执行这个操作,除非改成非static全局变量。

源码文件logging.cc

1803 void InitGoogleLogging(const char* argv0) {

1804   glog_internal_namespace_::InitGoogleLoggingUtilities(argv0);

1805 }

1806 

1807 void ShutdownGoogleLogging() {

1808   glog_internal_namespace_::ShutdownGoogleLoggingUtilities();

1809   LogDestination::DeleteLogDestinations();

1810   delete logging_directories_list;

1811   logging_directories_list = NULL;

1812 }

源码文件src/utilities.cc

57 static const char* g_program_invocation_short_name = NULL;

167 bool IsGoogleLoggingInitialized() {

168   return g_program_invocation_short_name != NULL;

169 }

316 void InitGoogleLoggingUtilities(const char* argv0) {

317   CHECK(!IsGoogleLoggingInitialized())

318       << "You called InitGoogleLogging() twice!";

319   const char* slash = strrchr(argv0, '/');

320 #ifdef OS_WINDOWS

321   if (!slash)  slash = strrchr(argv0, '\\');

322 #endif

323   g_program_invocation_short_name = slash ? slash + 1 : argv0;

324   g_main_thread_id = pthread_self();

325 

326 #ifdef HAVE_STACKTRACE

327   InstallFailureFunction(&DumpStackTraceAndExit);

328 #endif

329 }

330 

331 void ShutdownGoogleLoggingUtilities() {

332   CHECK(IsGoogleLoggingInitialized())

333       << "You called ShutdownGoogleLogging() without calling InitGoogleLogging() first!";

334 #ifdef HAVE_SYSLOG_H

335   closelog();

336 #endif

g_program_invocation_short_name = NULL;

337 }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-12-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档