デバッグ
デバッグとは
デバッグは、コードに存在するエラーを検出して修正するプロセスです。
すべての.NETプログラムは、2つの異なるモードで実行できます。
- リリースモード - 通常、本番環境で使用されます。 このモードでは、.NETはコードの実行速度を向上させ、メモリ使用量を削減するための様々なコンパイラおよびJust-In-Time最適化を有効にします。
- デバッグモード - 主に開発およびテスト環境で使用されます。 すべての最適化が無効化され、.NETデバッガーをコードにアタッチできます。
.NETライブラリとアプリケーションを扱う際、デバッグには以下が含まれます:
- デバッグモードでコードを実行する
- .NETデバッガーをコードにアタッチする
- 実行フローを一時停止すべき箇所を示すコードブレークポイントを設定する
- ブレークポイントでの計画的な一時停止を伴う、コード実行フローの追跡
.NETデバッガーの定義
.NETデバッガーは、ランタイムAPIを使用するプログラムです。 これらのAPIは、.NETプロセスの実行フローを制御することを可能にします。 つまり、指定されたブレークポイントで実行を一時停止し、様々な状態(これらの状態中に個々の変数が保持する値を含む)を保存できます。
デバッグモードでのアルゴの構築
上記で説明したように、cBotやインジケーターをデバッグするには、この拡張機能をデバッグモードで構築する必要があります。 デフォルトでは、cTrader UIのビルドボタンをクリックすると、コードの最適化を有効にするためにリリースモードで拡張機能が実行されます。
cBotやインジケーターをデバッグモードで構築するには、.NET CLIまたはVisual Studioなどの外部IDEを使用する必要があります。 このドキュメントでは、Visual Studioでのデバッグプロセスを示していますが、 このプロセスは他のIDEでも若干の変更を加えて再現できます。
最新バージョンのVisual Studioをマシンにインストールし、以下の操作を行ってください:
-
コードエディターウィンドウ上部のEdit in...ドロップダウンにあるEdit in Visual Studioオプションを選択して、インジケーターまたはcBotをVisual Studioで開きます。
-
Visual Studioコードエディター上部のメニューで、デバッグを選択します。

- cBotまたはインジケーターをデバッグモードでビルドします。
cBotまたはインジケーターのデバッグ
デバッグモードでcBotまたはインジケーターを構築する方法を理解したところで、実際にデバッグする方法に焦点を当てます。
-
インジケーターまたはcBotのアクセス権を
FullAccessに変更します。 -
デバッガーをインジケーターまたはcBotの実行プロセスにアタッチします。 これは、
System.Diagnostics.Debugger.Launch()メソッドを呼び出すことで行えます。
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
注意
System.Diagnostics.Debugger.Launch() メソッドは、OnStart() メソッド(cBotの場合)または Initialize() メソッド(インジケーターの場合)で呼び出す必要があります。
- cBotまたはインジケーターの新しいインスタンスを実行します。 インスタンスがすでに実行中の場合は、UIで選択します。 デバッガーを選択するプロンプトとともにVisual Studioにリダイレクトされるはずです。 選択してOKをクリックします。

デバッグが開始されると、ブレークポイントの設定、コード行の(ステップイン)、コールスタックと変数値の確認ができます。
Visual Studioでのデバッグ方法の完全なガイドについては、Visual Studioデバッグドキュメントをご確認ください。
DEBUGプリプロセッサディレクティブの使用
cBotまたはインジケーターのコードで DEBUG プリプロセッサディレクティブを使用して、実行フローを制御することもできます。
#if DEBUG ディレクティブは、デバッグモードでのみコードのブロックまたは行を実行したい場合に便利です。
1 2 3 4 5 6 7 8 9 | |
上記の例では、cBotをデバッグモードでビルドすると、"Not Debugging"のコード行はコンパイルされません。
C#プロセッサディレクティブに関する追加情報は、このドキュメントで確認できます。