最近写了一段代码,程序core在了打日志的地方,很诡异。
LOG_FATAL("[log_id=%ld]sql exception throw, mysql error code = %d, exception %s",
request.log_id,
e.getErrorCode(),
e.what());
LOG_FATAL这个宏是自己封装的一个打日志的函数,底层会调用log4cpp的接口,再底层当然就是调用fprintf,vfprintf等。
很普通的一个函数,在代码运行到这里时出core了。
#0 0x0049fe29 in vfprintf () from /lib/i386-linux-gnu/libc.so.6
#1 0x004c526b in vsnprintf () from /lib/i386-linux-gnu/libc.so.6
#2 0x081a08be in log4cpp::StringUtil::vform(char const*, char*) ()
#3 0x081942f6 in log4cpp::Category::_logUnconditionally(int, char const*, char*) ()
#4 0x081944bc in log4cpp::Category::logva(int, char const*, char*) ()
#5 0x08066b1a in utils::Logger::logva (level=0, stringFormat=0x81b2740 "insert coin earn record failed", ar