【MQL5】DebugBreak関数について

MQL5リファレンス
スポンサーリンク
スポンサーリンク

DebugBreak関数の働き・役割

DebugBreak関数は、デバッグモード(プログラムをステップごとに実行してバグを見つけるモード)でプログラムが実行されている際に、ブレークポイント(プログラムの任意の場所で一時停止させるポイント)を設定してプログラムの実行を一時的に中断するために使用されます。
この関数を使用すると、特定の条件でプログラムを停止させ、変数の値やコードのステップごとの挙動を確認できます。デバッグモードでのみ動作し、通常の実行時には効果がありません。

DebugBreak関数の引数について

void  DebugBreak();

DebugBreak関数引数を持ちません。呼び出された時点で即座にブレークポイントが設定され、プログラムの実行が停止します。

DebugBreak関数の戻り値について

DebugBreak関数には戻り値がありません。この関数は単にプログラムを中断するために使用されるため、特定の値を返すことはありません。

DebugBreak関数を使う際の注意点

DebugBreak関数は、デバッグモードで実行されているプログラムのみ有効です。デバッグモード以外では、この関数を使用してもプログラムの実行が中断されることはありません。

この関数は、コードの特定の箇所で停止し、変数の値やステップごとの動作を確認するために使用されます。DebugBreak関数を使用する際には、デバッグモードに切り替え、プログラムをF5キーなどで実行する必要があります。

通常のプログラム実行時には、この関数は無効であり、何も起こりません。そのため、実行環境がデバッグモードかどうかを確認して使用する必要があります。

DebugBreak関数を使ったサンプルコード

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
  //--- F5を使用してファイルをコンパイルする
  //--- デバッグモードでは、i と j が等しい場合に DebugBreak で停止する
  for(int i=0, j=20; i<20; i++, j--)
    {
    //--- i と j の現在の値をエキスパートログに出力
    PrintFormat("i=%d, j=%d", i, j);
    
    //--- i と j が等しいときにプログラムを一時停止し、エキスパートログに出力
    if(i == j)
        {
        Print("DebugBreak: iとjが等しいので停止します");
        DebugBreak();  // ブレークポイント
        }
    }
 }

サンプルコードに使われた関数や文法要素の解説

OnStart関数は、スクリプトが実行された際に最初に呼び出される関数です。主にスクリプトのエントリーポイントとして使用されます。

for文を使って、iとjの値を変化させながら繰り返し処理を行っています。この例では、iは0から20まで増加し、jは20から0まで減少します。

if文を使って、iとjが等しいかどうかを確認しています。等しい場合、DebugBreak関数が呼ばれ、プログラムが一時停止します。

DebugBreak関数が呼び出されると、プログラムの実行が一時停止します。この際に、変数iとjの値をデバッグモードで確認することができます。

この関数を使ってEAを作る際のアイディア

DebugBreak関数を使用して、エキスパートアドバイザーEA)の中で特定のロジックが正しく機能しているかどうかを検証できます。例えば、エントリー条件が満たされた時点や、ポジション管理ロジックの各段階で一時停止し、各変数や状態を確認することで、EAの動作を精査できます。これにより、EAのデバッグが効率よく進み、トレードロジックの改善がしやすくなります。

タイトルとURLをコピーしました