Hi, in cclogger.cpp, there are macros:
#define TRACE_TO_FILE(msg) \
if (g_EnableDebugTraceFile && !g_DebugTraceFile.IsEmpty()) \
{ \
wxTextFile f(g_DebugTraceFile); \
if ((f.Exists() && f.Open()) || (!f.Exists() && f.Create())) \
{ \
f.AddLine(msg); \
cbAssert(f.Write() && f.Close()); \
} \
} \
#define TRACE_THIS_TO_FILE(msg) \
if (!g_DebugTraceFile.IsEmpty()) \
{ \
wxTextFile f(g_DebugTraceFile); \
if ((f.Exists() && f.Open()) || (!f.Exists() && f.Create())) \
{ \
f.AddLine(msg); \
cbAssert(f.Write() && f.Close()); \
} \
}
So, how to use them?
So, how to use them?
The first one enables you to add messages to a trace file which are gloablly triggered by the state of the variable "g_EnableDebugTraceFile". The second one will ignore the state and always write to the debug file. The files name must b provided though "g_DebugTraceFile", otherwise none of the both is written.
Its really for very low-level debugging only. I used it from time to time to trace freezes. But then, such debug statements across the code won't make it into SVN. So these macros are for a personal developer's convenience.
Use them as:
TRACE_TO_FILE(wxT("Entering Loop..."))
...or:
TRACE_TO_FILE(wxString::Format(wxT("Entering Loop %d..."), 5))
So, how do you put those macros? Did you put them in the function body of
void CCLogger::Log(const wxString& msg)
void CCLogger::DebugLog(const wxString& msg)
?
Also, about this variable: g_EnableDebugTraceFile, how do you set if or reset it? Do you want to log the message when the parsing is parsing a specific file? I see there is a similar code (maybe added by Loaden, the comment below was added by me in my local copy)
// in some cases, you are only interested in the log message of some specific file
// you can use this macro, it will set the global value g_EnableDebugTrace in the
// Tokenizer, so DebugLog message is only print when parsing this file.
#define TRACE2_SET_FLAG(traceFile) \
g_EnableDebugTrace = !g_DebugTraceFile.IsEmpty() && traceFile.EndsWith(g_DebugTraceFile)
With this feature, if the parsing parsing many source files, but you are only interest the log message for one file: e.g. aaa.cpp, you can set this variable when parsing aaa.cpp, and later reset the variable in parsing other files.
BTW: why not just use the command line start up option:
--log-to-file --debug-log-to-file
In this case, all the cclogger log messages are go to log files, so you can see all the locker messages (mutex or critical section locker messages) there.
--log-to-file --debug-log-to-file
Where are the resulting logs. Do these parameters work on ms windows?