从0开始学编程(12) 使用 eclipse的 php插件单步调试php程序

  categories:0基础编程  author:

使用 eclipse php插件单步调试php程序

本文简要介绍程序编写过程中几种错误类型, 然后介绍有哪些办法找到这些错误,并且着重介绍调试相关手段等。

本文介绍的内容,参考视频资料:http://pan.baidu.com/s/1dDf40yH (没有密码)

内容及视频录制中的环境在安装好的虚拟机环境中,下载地址如下:

http://pan.baidu.com/s/1qW8UgQo 密码:506b

一.错误类型

一般情况下,我们写好程序, 然后运行程序, 最后查看结果,过程基本相同, 这个过程对于一般情况还可以,但是若是遇到复杂问题,或者有时候程序莫名其妙的不符要求的地方时, 简单的编写、运行、查看模式就有些吃力了。

如何排除程序的不正确情况?一般有如下方法可以帮助我们

1) 程序的编辑器、开发环境,会自动检测是否有不符程序约定(语法错误)情况发生, 例如我们的eclipse php环境就有这个功能, 有问题的地方它会告诉你。

2) 运行时错误

运行时错误是上述编辑器等无法帮您检查出来的编译错误之外的另一类错误。例如我们定义一个变量, 但是变量的初始值是0, 然后把这个数作为分母进行除法。这个情况经常发生在我们写代码时,忘记对变量赋值,然后就写到公式中,造成这个错误。这种错误虽然难于检查,但是毕竟还是可以运行这个代码时体现出来,我们有机会知道他, 然后去想办法修改它。

3) 逻辑错误

逻辑错误是编译, 运行以外的一类错误,例如,我们写个程序用来记账, 例如超市,每当我们销售一个商品时, 通过扫码,计算用户的购买商品价钱, 然后用户给我们钱, 然后我们找给用户零钱。代码如下

假设:   变量1 =  用户购买商品的 金额

      变量2 =  用户给我们现金数量

      变量3 = 变量2 + 变量1   (应该找给用户的零钱)

上面这个段程序,一般不会有编译错误,也不会有运行时错误。

然后假设我们 售货员也没有发现问题, 这个时候我们给用找的零钱多少??

我们如何发现这个错误?

上面的错误就是逻辑错误。

二.常用调试程序错误的方法

我们的计算机现在已经非常快了,高速运行的程序我们没办法了解他内个如何工作的,因此想找出问题比较麻烦。因此我们有几个办法可以选择:

1. 静态代码分析

通过仔细,非常仔细阅读源程序,来查看哪些是错误的,这个在代码比较少时是可以的, 但是当代码比较多时,效率就低了,也没办法弄得很清楚。

2. 打印输出 

通过把运行时的一些信息,输出的文件, 窗口,显示器上, 来同预期的输出对比,来检查问题,这个有时候很必要, 特别是调试多线程程序的情况下。

3. 动态代码调试

通过 专用debug工具来进行调试, 也可以用ide(集成开发环境)进行调试

三. Debug程序

为了调试我们的程序,我们需要把程序设置到调试模式, 这样我们可以利用工具来中断(暂停)正常运行的程序, 然后我们可以在暂停的程序上看到程序执行到了哪一行, 在这行时, 变量的值都是多少, 程序是从哪里执行到这里来的。

然后我们可以选择 执行下一行,仅仅是一行程序, 然后可以继续观察变量值等, 通过这个过程我们可以一点一点来了解程序的执行过程,这样可以确定问题的所在

在程序被暂停时,我们甚至可以修改程序中某些变量的值, 然后选择全部执行后面全部程序。

或者我们调试一些代码后, 感觉没有问题了, 我们继续执行程序后面全部的代码, 来观察相关情况。

下面是eclipse php的调试窗口介绍

调试窗口如下:

图中1:程序运行信息窗口(堆栈信息),表明程序是从哪里运行到这里来的

图中2:程序变量显示窗口, 表明程序运行到这来后, 程序中哪些变量都是哪些值

图中3:是个tab窗口, 需要点击一下, 就显示出来了, 是断点窗口,表示程序中有哪些断点

图中4:源代码查看窗口,通过这个我们可以看到我们程序的内容。

1. 我们可以通过程序的堆栈窗口了解程序的调用顺序,如下图:

上图我们可以清晰看到一个树形结构, 表明了调用顺序

下面是一个具体的变量窗口

通过这个窗口我们可以清楚了解哪些变量已经定义了, 当前值是多少等。

程序源代码窗口

通过上面窗口我们可以清楚了解到程序执行到哪里了。

下面是单步运行相关

如上图几种不同颜色的 区域,代表代码运行, 单步执行, 单步跟踪进去执行等, 相关情况,以后慢慢讨论。可以参考视频进行研究等。



快乐成长 每天进步一点点