【发布时间】:2016-09-05 16:19:53
【问题描述】:
我正在使用 caffe 库制作自己的 c++ 分类程序。 我想在 caffe 的模型初始化步骤中隐藏所有日志消息。
根据Disable glog's "LOG(INFO)" logging, 我可以通过设置环境变量来禁用大部分日志
GLOG_minloglevel=2
从命令行。
但是,我真正想要的是从可执行文件本身中删除所有日志,因此用户无法通过重置 GLOG_minloglevel 值来打开日志。
我可以找到一种方法在编译时从http://rpg.ifi.uzh.ch/docs/glog.html 中删除 glog 的日志消息。 它说我可以像这样删除日志:
> #define GOOGLE_STRIP_LOG 1 // this must go before the #include!
> #include <glog/logging.h>
由于我的应用程序使用 caffe 的 c++ 库,我需要通过在 caffe 的 CMakeLists.txt 中添加以下选项 add_definitions(-DGOOGLE_STRIP_LOG=2) 来重建 caffe 库。
编译成功,但是当我使用新的 caffe 库运行我的应用程序时,它在模型初始化步骤期间因分段错误错误而停止。
通过像这样使用 gdb 运行,我可以获得更详细的错误消息:
程序收到信号SIGSEGV,分段错误。 __memcpy_sse2_unaligned () 在 ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:153 153 ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:没有这样的文件或目录
当我在 caffe 的 CMakeLists.txt 中回滚到没有 add_definitions(-DGOOGLE_STRIP_LOG=2) 的原始 caffe 库时,我的应用程序运行良好。
谁能给我一个解决这个问题的提示?
提前谢谢你。
【问题讨论】:
-
很好奇您为什么要删除日志记录 - 它在某些时候有用吗?