Developer forums (C::B DEVELOPMENT STRICTLY!) > CodeCompletion redesign

How to use TRACE_TO_FILE and TRACE_THIS_TO_FILE Macros

(1/2) > >>

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