这本身并不坏。但是
1.对断言(assertions)只字未提,而断言在调试时可是大有帮助。
2. 至少可以说,跟踪器是有争议的。
3.应该提到的是,由于(编译器的)优化,调试简单函数时会因为内联而变得非常困难,建议采用一些方法来规避这一缺点。
这本身并不坏。但是
1.对断言(assertions)只字未提,而断言在调试时可是大有帮助。
2. 至少可以说,跟踪器是有争议的。
3.应该提到的是,由于优化(编译器)和内联,调试简单函数是非常困难的,并建议如何解决这一缺点。
但这里写的从根本上就是错误的:
Хочу отдельно отметить, что компилятор MetaEditor транслирует программы в байт-код, а не нативный код (подробнее читаем по ссылке). Это дает возможность создавать защищенные шифрованием программы, не боясь взлома. Также преимуществом такой трансляции является то, что байт-код может быть запущен как в 32-х битной версии операционной системы, так и в 64-х битной.
在编译的第一阶段,会存储一个通用字节码,但在终端执行时,这个字节码会完全 100% 转换为本地 32 或 64 位代码,并进行额外的优化。正是由于翻译成了本地代码,MQL5 程序 的执行速度比 MQL4 提高了数倍。
在 MQL4 中,纯粹的字节码没有翻译成本地代码。
在调试器中,内联完全被禁用,演练完全在源代码上进行。
这样的情况有多久了?以前是个大问题我已经很久没在 5KA 工作了
从一开始就这样。
Inlining 吞噬了大部分函数,即使从理论上讲,也根本不可能用它来调试。也许你使用的只是最初版本的调试器,其中存在很多问题。
我们完成 MT4 升级后,一定会尽快改进调试器。
新文章 调试 MQL5 程序已发布:
本文主要针对那些已经学过这种语言、但又没有完全掌握该语言开发的程序员。文中给出一些调试技巧,并介绍作者与众多其他程序人员的经验。
调试是程序开发过程中的一个阶段,旨在检查并移除程序执行错误。在调试过程中,程序员会对应用程序实施分析,尝试找出其潜在问题。而待分析数据,则是通过观察变量和程序执行(被调用的函数和时机)而来。
有两种互为补充的调试技术:
作者:Nikolay Demko