#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 * * 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