Debug for mq4

 
Good afternoon, I wanted to know if there is some software that can do debug to mq4 program. Thank you.
 
jugivi:
Good afternoon, I wanted to know if there is some software that can do debug to mq4 program. Thank you.
Yes, Comment(), Print() & Alert() . . they are all you have.
 
Thanks, is what I'm using, but ...
 
RaptorUK: Yes, Comment(), Print() & Alert() . . they are all you have.
  1. Which do not work under optimization. And DebugView which work always:
    /** Log
    * send information to OutputDebugString() to be viewed and logged by
    * SysInternal's DebugView (free download from microsoft) This is ideal for
    * debugging as an alternative to Print(). The function will take up to 10
    * stringa (or numeric) arguments to be concatenated into one debug message.
    //*/
    #import "kernel32.dll"
       void OutputDebugStringA(string msg);
    #import
    void Log(string s1,    string s2="", string s3="", string s4="", string s5="",
             string s6="", string s7="", string s8="", string s9="", string s10=""){
        if (IsDllsAllowed()){
            string out  = WindowExpertName() + ": "
                        + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10;
            OutputDebugStringA(out);
        }
    }
    
  2. An in the tester/visual mode you can call PauseTest()
    /*                                          PauseTest
    // https://forum.mql4.com/35112
    // Each chart consists of two windows (i.e. two hWnds): the drawing area (WH,)
    // and a container (GA.) There is then a standard MDI container which holds all
    // the chart windows (GA1.) And that sits inside the main MT4 window (GA2.)
    */
    #include <WinUser32.mqh>
    #import "user32.dll"
      int GetAncestor(int, int);
    #import
    void PauseTest(){   datetime now = TimeCurrent();   static datetime oncePerTick;
        if( oncePerTick != now  )if( IsTesting()
        )if( IsVisualMode()     )if( IsDllsAllowed()    ){  oncePerTick = now;
            for(int i=0; i<200000; i++){        // Delay required for speed=32 (max)
                if (IsStopped()) break;         // https://forum.mql4.com/32837 WH-DL
                int main = GetAncestor(WindowHandle(Symbol(), Period()), 2);//GA_ROOT
                if (i==0) PostMessageA(main, WM_COMMAND, 0x57a, 0); // 1402. Pause
        }   }
        // The PostMessage above sends the command to the main terminal. Thus it
        // only affects the active chart window. To maximize a window for example
        // must activate it first. https://forum.mql4.com/35336#538848
        // See also SetForgroundWindow(h) https://www.mql5.com/en/code/10146
    }
    

Reason: