Diskussion zum Artikel "Zur Fehlerbehebung von MQL5-Programmen (Debugging)"

 

Neuer Artikel Zur Fehlerbehebung von MQL5-Programmen (Debugging) :

Dieser Artikel richtet sich primär an Programmierer, die die Sprache zwar bereits gelernt haben, die allerdings noch keine Meister ihres Fachs sind. Er wird auf verschiedene Debugging-Techniken eingehen, die der gebündelten Erfahrung des Autors sowie vieler anderer Programmierer entspringen.

Wie wir sehen können, hat dieser kleine Fehler einen gewaltigen Einfluss auf die Programmoperationen. Folglich gibt der Compiler für diese Codezeile eine entsprechende Warnung aus.

Fassen wir zusammen: Kompilieren ist die erste Stufe des Debuggings. Die Warnungen eines Compilers sollten nicht ignoriert werden.

Abb. 1. Debugging von Daten während eines Kompilierungsvorgangs

Abb. 1. Debugging von Daten während eines Kompilierungsvorgangs

Autor: Nikolay Demko

 

Es ist nicht schlecht, an sich. Aber.

1. Kein Wort überAssertions (Behauptungen), die gerade beim Debuggen eine große Hilfe sind.

2. der Tracer ist, gelinde gesagt, umstritten.

3. es sollte erwähnt werden, dass aufgrund der Optimierung (des Compilers) das Debugging bei einfachen Funktionen durch Inlining sehr schwierig wird, und es sollten Möglichkeiten vorgeschlagen werden, diesen Nachteil zu umgehen.

 
TheXpert:

Es ist nicht schlecht, an sich. Aber.

1. Kein Wort über Assertions (Behauptungen), die gerade beim Debuggen eine große Hilfe sind.

2. der Tracer ist, gelinde gesagt, umstritten.

3. sollte man erwähnen, dass aufgrund der Optimierung (Compiler) das Debuggen bei einfachen Funktionen durch Inlining sehr schwierig ist und Möglichkeiten vorschlagen, diesen Nachteil zu umgehen.

Ich werde über 1 und 3 nachdenken (vielleicht werde ich den Artikel sogar fertigstellen), jeder hat eine Menge eigener Methoden, aber schlagen Sie Tracing vor (oder besser gesagt, fügen Sie einfach Links ein, es gab bereits eine Menge Vorschläge).
 
TheXpert:

3. Es ist zu erwähnen, dass aufgrund der Optimierung (Compiler) das Debugging bei einfachen Funktionen wegen des Inlinings sehr schwierig ist, und es sind Möglichkeiten zur Umgehung dieses Nachteils vorzuschlagen.

Im Debugger ist das Inlining vollständig deaktiviert, und der Walkthrough erfolgt vollständig über den Quellcode, so wie er ist.

Im Profiler der letzten Builds gab es ein Problem mit dem Checkpointing, das die Qualität der Berichte beeinträchtigte, aber es wurde behoben und in der nächsten Build nächste Woche wird eine neue Version mit detaillierteren Berichten verfügbar sein.

 

Aber was hier geschrieben wird, ist grundlegend falsch:

Хочу отдельно отметить, что компилятор MetaEditor транслирует программы в байт-код, а не нативный код (подробнее читаем по ссылке). Это дает возможность создавать защищенные шифрованием программы, не боясь взлома. Также преимуществом такой трансляции является то, что байт-код может быть запущен как в 32-х битной версии операционной системы, так и в 64-х битной.

In der ersten Stufe der Kompilierung wird ein universeller Bytecode gespeichert, aber bei der Ausführung im Terminal wird dieser Bytecode zu 100 % in nativen 32- oder 64-Bit-Code mit zusätzlicher Optimierung übersetzt. Durch die Übersetzung in nativen Code haben wir die Ausführungsgeschwindigkeit von MQL5-Programmen im Vergleich zu MQL4 vervielfacht.

Reinen Bytecode ohne Übersetzung in nativen Code gab es in MQL4.

 
Renat:

Im Debugger ist das Inlining vollständig deaktiviert, und die Komplettlösung ist vollständig auf den Quellcode beschränkt.

Wie lange ist das schon so? Früher war das ein großes Problem. Es ist nur schon eine ganze Weile her, dass ich mit 5ka gearbeitet habe.
 
TheXpert:
Wie lange ist das schon so? Früher war es ein großes Problem. Es ist nur schon eine ganze Weile her, dass ich in 5k gearbeitet habe.

Von Anfang an.

Inlining frisst die meisten Funktionen und es wäre unmöglich, damit überhaupt zu debuggen, selbst theoretisch. Vielleicht haben Sie nur mit den ersten Versionen des Debuggers gearbeitet, wo es eine Reihe von Problemen gab.

 

Und für die Fehlersuche während der Unkrautbekämpfung oder ohne Verbindung mit dem Markt? Haben Sie eine Lösung? Denn es gibt ein Problem nach dem "OnTick" mit dem Debugger, Auf MT4 gibt es einen"Tick-Generator", etwas wie dies auf mt5?

Vielen Dank im Voraus,

 
Bisemper:

Und für die Fehlersuche während der Unkrautbekämpfung oder ohne Verbindung mit dem Markt? Haben Sie eine Lösung? Denn es gibt ein Problem nach dem "OnTick" mit dem Debugger, Auf MT4 gibt es einen "Tick-Generator", etwas wie dies auf mt5?

Vielen Dank im Voraus,

Wir können eine Assoziation darüber machen ;-)
 

Ich benutze die Echtzeit-Otaldka praktisch nicht, weil der Prozess des Eintreffens von Kursen und des erforderlichen Chartausschnitts sehr lang ist.

Ich habe zu schieben Print in der alten Art und Weise und überwachen Sie es in der Prüfer.

Dennoch ist der lokale Debugger nicht vor Visual Studio überhaupt abheben. Man zeigt auf eine Variable und erhält einen Wert, man zeigt auf einen Ausdruck wie a+b /s und das Ergebnis erscheint. In ME ist es einfacher, Print zu verwenden.

 

Wir werden den Debugger definitiv verbessern, sobald wir das MT4-Upgrade abgeschlossen haben.