230 lines
8.5 KiB
MQL5
230 lines
8.5 KiB
MQL5
#ifndef LIB_DBG_DEBUG_RUNTIME_CONFIGURATION_MQH_INCLUDED
|
|
#define LIB_DBG_DEBUG_RUNTIME_CONFIGURATION_MQH_INCLUDED
|
|
#property version "5.10"
|
|
/**********************************************************************************
|
|
* Copyright (C) 2020 Dominik Egert <info@freie-netze.de>
|
|
*
|
|
* This file is the debugger main unloader/disabler library include file.
|
|
*
|
|
* Lisence applied: GPLv2
|
|
* https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
*
|
|
* Author Dominik Egert / Freie Netze UG.
|
|
**********************************************************************************
|
|
*
|
|
* Version: 5.10
|
|
* State: public
|
|
*
|
|
* File information
|
|
* ================
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Runtime code setup
|
|
//
|
|
|
|
// Define runtime mode
|
|
|
|
#define LIB_DBG_DEBUG_MQH_RUNTIME_MODE
|
|
|
|
|
|
// Clear any existing definitions
|
|
|
|
#undef DBG_DEBUGGER_FLAG_STATE
|
|
#undef DBG_STR_EX45_FILEINFO
|
|
#undef DBG_STR
|
|
#undef DBG_STR_PERSIST
|
|
#undef DBG_STR_VAR
|
|
#undef DBG_MSG
|
|
#undef DBG_MSG_IF
|
|
#undef DBG_MSG_PERSIST
|
|
#undef DBG_MSG_EVAL
|
|
#undef DBG_MSG_EVAL_CMNT
|
|
#undef DBG_MSG_EVAL_IF
|
|
#undef DBG_MSG_EVAL_IF_CMNT
|
|
#undef DBG_MSG_VAR
|
|
#undef DBG_MSG_VAR_IF
|
|
#undef DBG_MSG_ARRAY_OUT_OF_RANGE
|
|
#undef DBG_MSG_LISTDUMP
|
|
#ifndef LIB_MQLAPI_CALL_TRACING_ENABLED
|
|
#undef DBG_MSG_TRACE_BEGIN
|
|
#undef DBG_MSG_TRACE_END
|
|
#undef DBG_MSG_TRACE_RETURN
|
|
#undef DBG_MSG_TRACE_RETURN_VAR
|
|
#undef DBG_MSG_TRACE_RETURN_OBJ
|
|
#undef DBG_MSG_NOTRACE_RETURN
|
|
#undef DBG_MSG_NOTRACE_RETURN_VAR
|
|
#undef DBG_MSG_NOTRACE_RETURN_OBJ
|
|
|
|
#endif
|
|
#undef DBG_SET_UNINIT_REASON
|
|
#undef DBG_ENUM_RESOLVER
|
|
#undef DBG_MSG_UNINIT_RESOLVER
|
|
#undef DBG_MSG_TRACE_FILE_LOADER
|
|
#undef DBG_BREAK_IF
|
|
#undef DBG_ASSERT
|
|
#undef DBG_ASSERT_LOG
|
|
#undef DBG_ASSERT_RETURN
|
|
#undef DBG_ASSERT_RETURN_VAR
|
|
#undef DBG_BREAK_ARRAY_OUT_OF_RANGE
|
|
#undef DBG_SLEEP_SECONDS
|
|
#undef DBG_SOFT_BREAKPOINT
|
|
#undef DBG_SOFT_BREAKPOINT_TS
|
|
#undef DBG_SOFT_BREAKPOINT_CONDITION
|
|
#undef DBG_SOFT_BREAKPOINT_EXEC_TIME
|
|
#undef DBG_BREAK_CONDITION_CREATE
|
|
#undef DBG_BREAK_CONDITION_ACTIVATE
|
|
#undef DBG_BREAK_CONDITION_DEACTIVATE
|
|
#undef DBG_BREAK_CONDITION_ON_ID
|
|
#undef DBG_BREAK_CONDITION_ON_ID_RESET
|
|
#undef DBG_TRACE_LOOP_BEGIN
|
|
#undef DBG_TRACE_LOOP_START
|
|
#undef DBG_TRACE_LOOP_FINISH
|
|
#undef DBG_TRACE_LOOP_END
|
|
#undef DBG_TRACE_LOOP_BEGIN_ID
|
|
#undef DBG_TRACE_LOOP_START_ID
|
|
#undef DBG_TRACE_LOOP_FINISH_ID
|
|
#undef DBG_TRACE_LOOP_END_ID
|
|
#undef LIB_DBG_GETTICKCOUNT
|
|
#undef LIB_DBG_INCLUDE_COMPLEX_TYPE
|
|
#undef DBG_SLEEP_MILLISECONDS
|
|
#undef DBG_SLEEP_SECONDS
|
|
#undef DBG_STR_TRACE_EXEC_DELAY_INFO
|
|
#undef DBG_DEBUGGER_RUNTIME_STATE
|
|
#undef DBG_TO_STRING
|
|
#undef DBG_STR_IF
|
|
#undef DBG_STR_VAR_IF
|
|
#undef DBG_STR_BITS
|
|
#undef DBG_STR_ERRCODE
|
|
#undef DBG_MSG_BITS
|
|
#undef DBG_MSG_ERRCODE
|
|
#undef DBG_FILE_VARNAME
|
|
#undef DBG_GENERIC_ASSERT
|
|
#ifndef LIB_MQLAPI_CALL_TRACING_ENABLED
|
|
#undef DBG_ERR_SUCCESS
|
|
#undef typename_raw
|
|
#undef __DBG_STRINGIFY_MACRO
|
|
#undef DBG_TRACE_EXEC_DELAY
|
|
#undef DBG_MSG_MQLFUNC
|
|
|
|
#endif
|
|
|
|
|
|
// EX5 File info string
|
|
|
|
#define DBG_DEBUGGER_FLAG_STATE "[RELEASE]"
|
|
#ifndef __MQL4_COMPATIBILITY_CODE__
|
|
#define DBG_STR_EX45_FILEINFO StringFormat("MQL5 build: %i %s", __MQL5BUILD__, DBG_DEBUGGER_FLAG_STATE)
|
|
|
|
#else
|
|
#define DBG_STR_EX45_FILEINFO StringFormat("MQL4 Terminal build: %i; compiler build: %i %s", TerminalInfoInteger(TERMINAL_BUILD), __MQL4BUILD__, DBG_DEBUGGER_FLAG_STATE)
|
|
|
|
#endif
|
|
|
|
|
|
// Remove debug output and comments
|
|
|
|
// Location string
|
|
#define DBG_CODE_LOCATION(x)
|
|
|
|
// Debug to string functions
|
|
#define DBG_STR(x) (string)(NULL)
|
|
#define DBG_STR_IF(x) (string)(NULL)
|
|
#define DBG_STR_VAR(x) (string)(NULL)
|
|
#define DBG_STR_VAR_IF(c, x) (string)(NULL)
|
|
#define DBG_STR_PERSIST(x) (string(x))
|
|
#define DBG_STR_BITS(x) (string)(NULL)
|
|
#define DBG_STR_ERRCODE(x) (string(x))
|
|
|
|
// Debug std out
|
|
#define DBG_MSG(x)
|
|
#define DBG_MSG_IF(condition, message)
|
|
#define DBG_MSG_FUNC_RETVAL(function_name) function_name
|
|
#define DBG_MSG_EVAL(evalutaion_term) evalutaion_term
|
|
#define DBG_MSG_EVAL_CMNT(message, evalutaion_term) evalutaion_term
|
|
#define DBG_MSG_EVAL_IF(condition, evalutaion_term) evalutaion_term
|
|
#define DBG_MSG_EVAL_IF_CMNT(condition, message, evalutaion_term) evalutaion_term
|
|
#define DBG_MSG_ARRAY_OUT_OF_RANGE(array, index)
|
|
#define DBG_MSG_ARRAY_INDEX_CHECK(array, index) array[index]
|
|
#define DBG_MSG_PERSIST(message) printf(message)
|
|
#define DBG_MSG_VAR(x)
|
|
#define DBG_MSG_BITS(x)
|
|
#define DBG_MSG_VAR_IF(x, y)
|
|
#define DBG_MSG_VARDUMP(x)
|
|
#define DBG_MSG_LISTDUMP(x, y)
|
|
#define DBG_MSG_ERRCODE(x)
|
|
#define DBG_ENUM_RESOLVER(x)
|
|
|
|
// Code tracing helpers
|
|
#ifndef LIB_MQLAPI_CALL_TRACING_ENABLED
|
|
#define DBG_MSG_TRACE_BEGIN
|
|
#define DBG_MSG_TRACE_END
|
|
#define DBG_MSG_TRACE_RETURN PERF_COUNTER_END return
|
|
#define DBG_MSG_TRACE_RETURN_VAR(x) PERF_COUNTER_END return(x)
|
|
#define DBG_MSG_TRACE_RETURN_OBJ(x) PERF_COUNTER_END return(x)
|
|
#define DBG_MSG_NOTRACE_RETURN PERF_COUNTER_END return
|
|
#define DBG_MSG_NOTRACE_RETURN_VAR(x) PERF_COUNTER_END return(x)
|
|
#define DBG_MSG_NOTRACE_RETURN_OBJ(x) PERF_COUNTER_END return(x)
|
|
|
|
#endif
|
|
|
|
// Debug comments
|
|
#define DBG_SET_UNINIT_REASON(x)
|
|
#define DBG_MSG_UNINIT_RESOLVER
|
|
#define DBG_UNINIT_REASON(x)
|
|
#define DBG_STR_COMMENT(x) NULL
|
|
#define DBG_MSG_TRACE_FILE_LOADER
|
|
|
|
|
|
// Remove asserts
|
|
|
|
#define DBG_ASSERT(condition, message)
|
|
#define DBG_ASSERT_LOG(condition, message)
|
|
#define DBG_ASSERT_RETURN_VOID(condition, message)
|
|
#define DBG_ASSERT_RETURN(condition, message, return_value)
|
|
#define DBG_BREAK_ARRAY_OUT_OF_RANGE(x, y)
|
|
#define DBG_BREAK_IF(x)
|
|
|
|
|
|
// Remove soft break points
|
|
|
|
#define DBG_SLEEP_SECONDS(x)
|
|
#define DBG_SOFT_BREAKPOINT
|
|
#define DBG_SOFT_BREAKPOINT_TS(x)
|
|
#define DBG_SOFT_BREAKPOINT_CONDITION(x)
|
|
#define DBG_SOFT_BREAKPOINT_EXEC_TIME(x)
|
|
#define DBG_BREAK_CONDITION_CREATE(x, y)
|
|
#define DBG_BREAK_CONDITION_ACTIVATE(x, y)
|
|
#define DBG_BREAK_CONDITION_DEACTIVATE(x, y)
|
|
#define DBG_BREAK_CONDITION_ON_ID(x)
|
|
#define DBG_BREAK_CONDITION_ON_ID_RESET(x)
|
|
|
|
|
|
// Loop tracing
|
|
|
|
#define DBG_TRACE_LOOP_BEGIN
|
|
#define DBG_TRACE_LOOP_START
|
|
#define DBG_TRACE_LOOP_FINISH
|
|
#define DBG_TRACE_LOOP_END
|
|
#define DBG_TRACE_LOOP_BEGIN_ID(x)
|
|
#define DBG_TRACE_LOOP_START_ID(x)
|
|
#define DBG_TRACE_LOOP_FINISH_ID(x)
|
|
#define DBG_TRACE_LOOP_END_ID(x)
|
|
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
//
|
|
// END Debugging support
|
|
//*********************************************************************************************************************************************************/
|
|
#endif // LIB_DBG_DEBUG_RUNTIME_CONFIGURATION_MQH_INCLUDED
|