你学会调试优化EA了吗?(有兴趣的交流:QQ1031130533) 新评论 [删除] 2009.11.08 13:32 新人在编写代码的时候难免遇到各式各样的问题,有的复杂有的简单,实际上很多问题并不难解决,有些甚至是你粗心大意导致的后果,有这些问题都没什么,关键是你要学会如何去调试程式,在程式执行过程中遇到问题如何去解决问题,我们来简单说一下常用的调试方式: 一、断点,就是让我们程式执行一半的时候停止下来,然后我们察看我们定义的变量值是否正确,在MetaEditor下面,你只要简单的按F9就能轻松进行断点操作,在遇到程式未知错误的时候,你甚至可以用这个方法来检测你程式到底当在哪里,然后做进一步的错误分析。使用这个方法需要注意的是,模式下进行断点,但毕竟调试信息少了,可能并不利于调试。 二、信息输出,就是程式一边执行,一边输出一些信息,当然,这些信息就看你如何设定,用这个方法就可以很及时的了解程序内部的数据变化情况,然后监测程式是否按照我们的预想来执行。输出的方法很多,如:void print()等然后只要简单的将调试信息输出即可;或者通过 窗口来进行。 三、排除法,你实在无法分析哪里出错,你就开始注释,把功能模块一个一个注释掉,看哪个模块出问题,然后再继续深入细化,虽然这个方法土,但却非常有效。 常见错误: 一、语法错误,这个不用多说,检察代码关键字拼写,看看语法有没有错误的地方。 二、变量未声明,新人经常会犯这样的错误,一个变量定义的域跟调用它的域不同,从而导致变量非法调用,这个只要留意文件的包含关系应该也是不难解决。 三、连带效应,有两段代码单独执行没问题,但是放在一起很容易出错,遇到这种情况你就要赶快检察一下全局变量、函式是否有冲突,注意,有时候这些错误并不会体现在编译的过程,而直接体现在执行过程,甚至有时候会有虚假的“执行正常”。 四、变量值的有效性,很多时候我们会主管认为某些变量的值是理所当然的,但往往有些时候,它们的值并非如我们所愿,建立有效的变量验证机制是非常有用和必要的。 五、合理的算法,但不合理的结果,一些算法看起来简单,便在脑子里模拟程式执行,实际上可能并非如此,把算法拆开一步一步将结果输出,这样很快就可以找到与你设想不同的地方。 六、数组越界,我们知道,数组通过下标来对相应的位置进行访问,如果不注意很容易因为下标超出你所定义数组的最大值而产生越界操作,这种错误查找比较困难,也可能会此错误的操作而导致其他地方出错。 七、指针溢出,(这个大部分人不经常用,MT5里面提供的比较详细)这个是非常容易出现的问题,包括高手也经常会出现这样的情况,出现这种错误非常头疼,往往要等到程序执行一段时间后才反应出异常,良好的代码编写习惯这时候就显得重要,这个问题就只能靠时间不断的做检测来进行除错。 好了,不说那么多了,写程序是一件很枯燥但是也很有兴趣的事情,大家只有多练习,多思考,才能是奇乐无穷。请联系QQ1031130533 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
新人在编写代码的时候难免遇到各式各样的问题,有的复杂有的简单,实际上很多问题并不难解决,有些甚至是你粗心大意导致的后果,有这些问题都没什么,关键是你要学会如何去调试程式,在程式执行过程中遇到问题如何去解决问题,我们来简单说一下常用的调试方式:
一、断点,就是让我们程式执行一半的时候停止下来,然后我们察看我们定义的变量值是否正确,在MetaEditor下面,你只要简单的按F9就能轻松进行断点操作,在遇到程式未知错误的时候,你甚至可以用这个方法来检测你程式到底当在哪里,然后做进一步的错误分析。使用这个方法需要注意的是,模式下进行断点,但毕竟调试信息少了,可能并不利于调试。
二、信息输出,就是程式一边执行,一边输出一些信息,当然,这些信息就看你如何设定,用这个方法就可以很及时的了解程序内部的数据变化情况,然后监测程式是否按照我们的预想来执行。输出的方法很多,如:void print()等然后只要简单的将调试信息输出即可;或者通过 窗口来进行。
三、排除法,你实在无法分析哪里出错,你就开始注释,把功能模块一个一个注释掉,看哪个模块出问题,然后再继续深入细化,虽然这个方法土,但却非常有效。
常见错误:
一、语法错误,这个不用多说,检察代码关键字拼写,看看语法有没有错误的地方。
二、变量未声明,新人经常会犯这样的错误,一个变量定义的域跟调用它的域不同,从而导致变量非法调用,这个只要留意文件的包含关系应该也是不难解决。
三、连带效应,有两段代码单独执行没问题,但是放在一起很容易出错,遇到这种情况你就要赶快检察一下全局变量、函式是否有冲突,注意,有时候这些错误并不会体现在编译的过程,而直接体现在执行过程,甚至有时候会有虚假的“执行正常”。
四、变量值的有效性,很多时候我们会主管认为某些变量的值是理所当然的,但往往有些时候,它们的值并非如我们所愿,建立有效的变量验证机制是非常有用和必要的。
五、合理的算法,但不合理的结果,一些算法看起来简单,便在脑子里模拟程式执行,实际上可能并非如此,把算法拆开一步一步将结果输出,这样很快就可以找到与你设想不同的地方。
六、数组越界,我们知道,数组通过下标来对相应的位置进行访问,如果不注意很容易因为下标超出你所定义数组的最大值而产生越界操作,这种错误查找比较困难,也可能会此错误的操作而导致其他地方出错。
七、指针溢出,(这个大部分人不经常用,MT5里面提供的比较详细)这个是非常容易出现的问题,包括高手也经常会出现这样的情况,出现这种错误非常头疼,往往要等到程序执行一段时间后才反应出异常,良好的代码编写习惯这时候就显得重要,这个问题就只能靠时间不断的做检测来进行除错。
好了,不说那么多了,写程序是一件很枯燥但是也很有兴趣的事情,大家只有多练习,多思考,才能是奇乐无穷。请联系QQ1031130533