调试
什么是调试
调试是一个检测和修复代码中存在错误的过程。
任何 .NET 程序都可以在两种不同的模式下运行。
- 发布模式 - 通常用于生产环境。 使用时,.NET 启用各种编译器和即时优化,以提高代码执行速度并减少内存占用。
- 调试模式 - 主要用于开发和测试环境。 所有优化都被禁用,您可以将 .NET 调试器附加到您的代码。
使用 .NET 库和应用程序时,调试包括以下内容:
- 在调试模式下运行代码
- 将 .NET 调试器附加到代码
- 设置代码断点以指示执行流是否应暂停
- 按计划在断点处暂停,跟踪代码执行流程
定义 .NET 调试器
.NET 调试器是使用运行时 API 的程序。 这些 API 反过来允许控制 .NET 进程的执行流程。 换句话说,它们可以在给定的断点处暂停执行,并存储各种状态(包括这些状态期间各个变量保存的值)。
以调试模式构建算法
如上所述,调试 cBot 或指标需要以调试模式构建此扩展。 默认情况下,当您在 cTrader UI 中点击构建按钮时,您的扩展以发布模式运行以启用代码优化。
要以调试模式构建 cBot 或指标,您需要使用 .NET CLI 或外部 IDE,如 Visual Studio。 在本文档中,我们展示了在 Visual Studio 中进行的调试过程。 但是,这个过程也可以在其他 IDE 中复制,只需进行少量更改。
在您的机器上安装最新版本的 Visual Studio并执行以下操作:
-
通过在代码编辑器窗口顶部的编辑于...下拉菜单中选择在 Visual Studio 中编辑选项,在 Visual Studio 中打开您的指标或 cBot。
-
在 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,并提示选择调试器。 选择并点击确定。

一旦调试开始,您可以设置断点,(逐步执行)代码行,并查看调用堆栈和变量值。
有关如何在 Visual Studio 中调试的完整指南,请查看 Visual Studio 调试文档。
使用 DEBUG 预处理器指令
您还可以在 cBot 或指标代码中使用 DEBUG 预处理器指令来控制执行流程。
当您只想在调试模式下运行代码块或代码行时,#if DEBUG 指令很有用。
1 2 3 4 5 6 7 8 9 | |
在上面的示例中,如果您以调试模式构建 cBot,"Not Debugging"代码行将不会被编译。
有关 C# 处理器指令的更多信息,请参阅此文档。