/** * @brief Writes messages to `debug.log` if `NDEBUG` is not defined. * @author Christian Burger (christian@krikkel.de) */ #ifndef __DEBUG_H__ #define __DEBUG_H__ #ifndef NDEBUG #include #include #include namespace krikkel { using std::fstream; using std::string; using std::endl; using std::strftime; using std::localtime; using std::time; class Debug { private: fstream logFile; static const int MAX_NUMBER_OF_SYSCALLS = 1024; static const char * syscalls[MAX_NUMBER_OF_SYSCALLS]; Debug(); string getTimestamp(); string getUname(); public: void log(string message, string fileName, int lineNo , string functionName); static Debug *getInstance(); }; } #define __debug_log(message) krikkel::Debug::getInstance()\ ->log(message, __FILE__, __LINE__, __func__) #else /// @todo check what's the business with this "((void)0)" instead of empty macro #define __debug_log(message) #endif /* NDEBUG */ #endif // __DEBUG_H__