Developer forums (C::B DEVELOPMENT STRICTLY!) > CodeCompletion redesign
How to use TRACE_TO_FILE and TRACE_THIS_TO_FILE Macros
ollydbg:
Hi, in cclogger.cpp, there are macros:
--- Code: ---#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()); \
} \
}
--- End code ---
So, how to use them?
MortenMacFly:
--- Quote from: ollydbg on July 18, 2013, 10:50:35 am ---So, how to use them?
--- End quote ---
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))
ollydbg:
--- Quote from: MortenMacFly on July 18, 2013, 11:27:20 am ---
--- Quote from: ollydbg on July 18, 2013, 10:50:35 am ---So, how to use them?
--- End quote ---
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))
--- End quote ---
So, how do you put those macros? Did you put them in the function body of
--- Code: ---void CCLogger::Log(const wxString& msg)
void CCLogger::DebugLog(const wxString& msg)
--- End code ---
?
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)
--- Code: --- // 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)
--- End code ---
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.
ollydbg:
BTW: why not just use the command line start up option:
--- Code: -----log-to-file --debug-log-to-file
--- End code ---
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.
Pecan:
--- Code: -----log-to-file --debug-log-to-file
--- End code ---
Where are the resulting logs. Do these parameters work on ms windows?
Navigation
[0] Message Index
[#] Next page
Go to full version