📄 cyg_trac.h
字号:
CYG_ASSERT( NULL == cyg_tracefunction_report_.exitmsg, \
"exitvoid used in typed function" ); \
CYG_ASSERT( 0 == cyg_tracefunction_report_.exitset, \
"exitvoid used when arg already set" ); \
cyg_tracefunction_report_.lnum = __LINE__; \
cyg_tracefunction_report_.exitset = 2; \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg( cyg_trace_return, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
"return void" ); \
CYG_MACRO_END
#define CYG_REPORT_RETVAL( _value_ ) CYG_MACRO_START \
CYG_ASSERT( 0 == cyg_tracefunction_report_.exitset, \
"exitvalue used when arg already set" ); \
cyg_tracefunction_report_.lnum = __LINE__; \
cyg_tracefunction_report_.exitvalue = (CYG_ADDRWORD)(_value_); \
cyg_tracefunction_report_.exitset = 1; \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg2( cyg_trace_return, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
cyg_tracefunction_report_.exitmsg ? \
cyg_tracefunction_report_.exitmsg : \
"return %08x", \
cyg_tracefunction_report_.exitvalue, 0 ); \
CYG_MACRO_END
#else // do not CYGDBG_INFRA_DEBUG_TRACE_MESSAGE
#define CYG_REPORT_RETURN() CYG_MACRO_START \
cyg_tracefunction_report_.lnum = __LINE__; \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracenomsg( cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum ); \
CYG_MACRO_END
#define CYG_REPORT_RETVAL( _value_ ) CYG_MACRO_START \
CYG_REPORT_RETURN(); \
CYG_MACRO_END
#endif // not CYGDBG_INFRA_DEBUG_TRACE_MESSAGE
#endif // not __cplusplus
#ifdef CYGDBG_INFRA_DEBUG_TRACE_MESSAGE
#define CYG_REPORT_FUNCARGVOID() CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
"(void)" \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG1( _format_, a ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg2( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a , 0 \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG2( _format_, a,b ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg2( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG3( _format_, a,b,c ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg4( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b, \
(CYG_ADDRWORD)c , 0 \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG4( _format_, a,b,c,d ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg4( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b, \
(CYG_ADDRWORD)c, (CYG_ADDRWORD)d \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG5( _format_, a,b,c,d,e ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg6( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b, \
(CYG_ADDRWORD)c, (CYG_ADDRWORD)d, \
(CYG_ADDRWORD)e , 0 \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG6( _format_, a,b,c,d,e,f ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg6( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b, \
(CYG_ADDRWORD)c, (CYG_ADDRWORD)d, \
(CYG_ADDRWORD)e, (CYG_ADDRWORD)f \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG7( _format_, a,b,c,d,e,f,g ) CYG_MACRO_START \
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg8( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b, \
(CYG_ADDRWORD)c, (CYG_ADDRWORD)d, \
(CYG_ADDRWORD)e, (CYG_ADDRWORD)f, \
(CYG_ADDRWORD)g , 0 \
); \
CYG_MACRO_END
#define CYG_REPORT_FUNCARG8( _format_, a,b,c,d,e,f,g,h ) CYG_MACRO_START\
if ( cyg_tracefunction_report_.cond ) \
cyg_tracemsg8( cyg_trace_args, \
cyg_tracefunction_report_.func, \
cyg_tracefunction_report_.file, \
cyg_tracefunction_report_.lnum, \
(_format_), \
(CYG_ADDRWORD)a, (CYG_ADDRWORD)b, \
(CYG_ADDRWORD)c, (CYG_ADDRWORD)d, \
(CYG_ADDRWORD)e, (CYG_ADDRWORD)f, \
(CYG_ADDRWORD)g, (CYG_ADDRWORD)h \
); \
CYG_MACRO_END
#else // do not CYGDBG_INFRA_DEBUG_TRACE_MESSAGE
#define CYG_REPORT_FUNCARGVOID() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG1( _format_, a ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG2( _format_, a,b ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG3( _format_, a,b,c ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG4( _format_, a,b,c,d ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG5( _format_, a,b,c,d,e ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG6( _format_, a,b,c,d,e,f ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG7( _format_, a,b,c,d,e,f,g ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG8( _format_, a,b,c,d,e,f,g,h ) CYG_EMPTY_STATEMENT
#endif // not CYGDBG_INFRA_DEBUG_TRACE_MESSAGE
#else // no CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS
#define CYG_REPORT_FUNCTION() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTYPE( _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAME( _name_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAMETYPE( _name_, _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTIONC() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTYPEC( _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAMEC( _name_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAMETYPEC( _name_, _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARGVOID() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG1( _format_, a ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG2( _format_, a,b ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG3( _format_, a,b,c ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG4( _format_, a,b,c,d ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG5( _format_, a,b,c,d,e ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG6( _format_, a,b,c,d,e,f ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG7( _format_, a,b,c,d,e,f,g ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG8( _format_, a,b,c,d,e,f,g,h ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_RETURN() CYG_EMPTY_STATEMENT
#define CYG_REPORT_RETVAL( _value_ ) CYG_EMPTY_STATEMENT
#endif // CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS
#else // ! CYGDBG_USE_TRACING
// -------------------------------------------------------------------------
// No traces: we define empty statements for trace macros.
#define CYG_TRACE0( _bool_, _msg_ ) CYG_EMPTY_STATEMENT
#define CYG_TRACE1( _bool_, _msg_, a ) CYG_EMPTY_STATEMENT
#define CYG_TRACE2( _bool_, _msg_, a,b ) CYG_EMPTY_STATEMENT
#define CYG_TRACE3( _bool_, _msg_, a,b,c ) CYG_EMPTY_STATEMENT
#define CYG_TRACE4( _bool_, _msg_, a,b,c,d ) CYG_EMPTY_STATEMENT
#define CYG_TRACE5( _bool_, _msg_, a,b,c,d,e ) CYG_EMPTY_STATEMENT
#define CYG_TRACE6( _bool_, _msg_, a,b,c,d,e,f ) CYG_EMPTY_STATEMENT
#define CYG_TRACE7( _bool_, _msg_, a,b,c,d,e,f,g ) CYG_EMPTY_STATEMENT
#define CYG_TRACE8( _bool_, _msg_, a,b,c,d,e,f,g,h ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTION() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTYPE( _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAME( _name_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAMETYPE( _name_, _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTIONC() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCTYPEC( _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAMEC( _name_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCNAMETYPEC( _name_, _exitmsg_ ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARGVOID() CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG1( _format_, a ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG2( _format_, a,b ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG3( _format_, a,b,c ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG4( _format_, a,b,c,d ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG5( _format_, a,b,c,d,e ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG6( _format_, a,b,c,d,e,f ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG7( _format_, a,b,c,d,e,f,g ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_FUNCARG8( _format_, a,b,c,d,e,f,g,h ) CYG_EMPTY_STATEMENT
#define CYG_REPORT_RETURN() CYG_EMPTY_STATEMENT
#define CYG_REPORT_RETVAL( _value_ ) CYG_EMPTY_STATEMENT
#define CYG_TRACE_PRINT() CYG_EMPTY_STATEMENT
#define CYG_TRACE_DUMP() CYG_EMPTY_STATEMENT
#endif // ! CYGDBG_USE_TRACING
// -------------------------------------------------------------------------
//
// CYG_TRACEn{[XDY]{V}}{B}
//
// Convenience macros: these fall into a few dimensions, with suffix letters:
// First option:
// X: user need not supply a format string, %08x is used
// D: ditto but signed decimal, %d
// Y: ditto but just plain %x
// Second option, only meaningful with one of XDY:
// V: "<var> = %..." is used, by stringifying the argument
// Third option:
// B: user need not supply a bool; the symbol CYG_TRACE_USER_BOOL is
// used (which we do not define, user must do this)
#define CYG_TRACE0B( _msg_ ) \
CYG_TRACE0( CYG_TRACE_USER_BOOL, _msg_ )
#define CYG_TRACE1B( _msg_, a ) \
CYG_TRACE1( CYG_TRACE_USER_BOOL, _msg_, a )
#define CYG_TRACE2B( _msg_, a,b ) \
CYG_TRACE2( CYG_TRACE_USER_BOOL, _msg_, a,b )
#define CYG_TRACE3B( _msg_, a,b,c ) \
CYG_TRACE3( CYG_TRACE_USER_BOOL, _msg_, a,b,c )
#define CYG_TRACE4B( _msg_, a,b,c,d ) \
CYG_TRACE4( CYG_TRACE_USER_BOOL, _msg_, a,b,c,d )
#define CYG_TRACE5B( _msg_, a,b,c,d,e ) \
CYG_TRACE5( CYG_TRACE_USER_BOOL, _msg_, a,b,c,d,e )
#define CYG_TRACE6B( _msg_, a,b,c,d,e,f ) \
CYG_TRACE6( CYG_TRACE_USER_BOOL, _msg_, a,b,c,d,e,f )
#define CYG_TRACE7B( _msg_, a,b,c,d,e,f,g ) \
CYG_TRACE7( CYG_TRACE_USER_BOOL, _msg_, a,b,c,d,e,f,g )
#define CYG_TRACE8B( _msg_, a,b,c,d,e,f,g,h ) \
CYG_TRACE8( CYG_TRACE_USER_BOOL, _msg_, a,b,c,d,e,f,g,h )
// long hex versions
#define CYG_TRACE1X( _bool_, a ) \
CYG_TRACE1( _bool_, "%08x", a )
#define CYG_TRACE2X( _bool_, a,b ) \
CYG_TRACE2( _bool_, "%08x %08x", a,b )
#define CYG_TRACE3X( _bool_, a,b,c ) \
CYG_TRACE3( _bool_, "%08x %08x %08x", a,b,c )
#define CYG_TRACE4X( _bool_, a,b,c,d ) \
CYG_TRACE4( _bool_, "%08x %08x %08x %08x", a,b,c,d )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -