`
izuoyan
  • 浏览: 8950230 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

你学会调试程序了吗?(转)

阅读更多

你学会调试程序了吗?

  新人在编写代码的时候难免遇到各式各样的问题,有的复杂有的简单,实际上很多问题并不难解决,有些甚至是你粗心大意导致的后果,有这些问题都没什么,关键是你要学会如何去调试程式,在程式执行过程中遇到问题如何去解决问题,我们来简单说一下常用的调试方式:

  一、断点,就是让我们程式执行一半的时候停止下来,然后我们察看我们定义的变量值是否正确,比如我们人物的坐标,地图的位置等等。在VC下面,你只要简单的按F9就能轻松进行断点操作,在遇到程式未知错误的时候,你甚至可以用这个方法来检测你程式到底当在哪里,然后做进一步的错误分析。使用这个方法需要注意的是,你的程式最好是在DEBUG模式下进行,虽然可以在Release模式下进行断点,但毕竟调试信息少了,可能并不利于调试。

  二、信息输出,就是程式一边执行,一边输出一些信息,当然,这些信息就看你如何设定,用这个方法就可以很及时的了解程序内部的数据变化情况,然后监测程式是否按照我们的预想来执行。输出的方法很多,如:建立一个log文件,然后只要简单的将调试信息输出到文件中即可;或者通过VCIDE环境下的Output窗口来进行,可以用OutputDebugString("...")这支函式来进行输出。

  三、排除法,你实在无法分析哪里出错,你就开始注释,把功能模块一个一个注释掉,看哪个模块出问题,然后再继续深入细化,虽然这个方法土,但却非常有效。


常见错误:
  一、语法错误,这个不用多说,检察代码关键字拼写,看看语法有没有错误的地方。

  二、变量未声明,新人经常会犯这样的错误,一个变量定义的域跟调用它的域不同,从而导致变量非法调用,这个只要留意文件的包含关系应该也是不难解决。

  三、连带效应,有两段代码单独执行没问题,但是放在一起很容易出错,遇到这种情况你就要赶快检察一下全局变量、函式是否有冲突,注意,有时候这些错误并不会体现在编译的过程,而直接体现在执行过程,甚至有时候会有虚假的“执行正常”。

  四、变量值的有效性,很多时候我们会主管认为某些变量的值是理所当然的,但往往有些时候,它们的值并非如我们所愿,建立有效的变量验证机制是非常有用和必要的。

  五、合理的算法,但不合理的结果,一些算法看起来简单,便在脑子里模拟程式执行,实际上可能并非如此,把算法拆开一步一步将结果输出,这样很快就可以找到与你设想不同的地方。

  六、数组越界,我们知道,数组通过下标来对相应的位置进行访问,如果不注意很容易因为下标超出你所定义数组的最大值而产生越界操作,这种错误查找比较困难,也可能会此错误的操作而导致其他地方出错。

  七、指针溢出,这个是非常容易出现的问题,包括高手也经常会出现这样的情况,出现这种错误非常头疼,往往要等到程序执行一段时间后才反应出异常,良好的代码编写习惯这时候就显得重要,这个问题就只能靠时间不断的做检测来进行除错。

  一年以来都没怎么写代码了,今天心血来潮把上次未完成的帖子完成,希望能够对新人有所帮助,也希望大家指正批评。

分享到:
评论

相关推荐

    电子学会Python一级考试知识点总结

    一、了解Python有多种开发环境,熟练使用Python自带的IDLE开发 环境,能够进行程序编写、调试和分析,具备使用Python开发环 境进行程序设计的能力: (1)了解Python常见的几种编程环境:IDLE、Visual Studio Code...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    虽然说学习ASP.NET不需要任何ASP基础,但是我觉得如果大家ASP不会,还是先看一下【十天学会ASP教程】,大家所需要了解的不是ASP的程序怎么写,而是怎么构建服务器,怎么使用HTML表单,同时对SQL语句有一个基础和理解...

    计算机系统实验报告 LC-3仿真器安装和使用

    (2)学会在LC-3仿真环境下运行和调试程序的方法 。 二、实验内容与方法 利用提供的安装软件包和软件使用说明文档,完成以下试验内容: (1)安装LC-3仿真器 (2)利用LC3EDIT输入机器代码程序(0/1模式)并创建可...

    10天学会AVR——DS1302的工作原理,程序,课件

    2、 安装软件(ICC AVR 和AVR STUDIO)及其使用,包括新建工程、程序下载,仿真调试;整板测试;板上资源。 3、 着重介绍一下USB接口的仿真器。 第二讲:AVR单片机的概述和C语言的基础知识 1、 AVR单片机的概述包括...

    第一次实验报告-2019092121-沈晨玙1

    2. 学会在LC-3仿真环境下编辑程序和转换为可执行目标程序的方法 3. 学会在LC-3仿真环境下运行和调试程序的方法 3. 利用LC3EDIT输入机器代码程序

    D/A数模转换设计报告

    二 实验仪器与设备 示波器一台,DAC0832芯片一片,TPC1-H 通用微机接口实验系统一台,PC微机1台,专用导线若干,MASM汇编及调试程序1套 三 硬件功能 DAC0832芯片功能 DAC0832是采用CMOS工艺制成的...

    DSP实验报告—实验2 编写一个以C语言为基础的DSP程序

    1.学习用标准C语言编制程序;了解常用的C语言程序设计方法和组成部分。 2.学习编制连接命令文件,并用来控制代码的连接。 3.学会建立和改变map文件,以及利用它观察DSP内存使用...4.熟悉使用软件仿真方式调试程序。

    试验一 LC-3仿真器安装和使用1

    (2)学会在LC-3仿真环境下编辑程序和转换成可执行目标程序的方法 (2)学会在LC-3仿真环境下运行和调试程序的方法 (3)利用LC3EDIT输入机器代码

    C 程序指导书及实践指导

    现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。 4、为一个起泡排序程序设计测试用例,并测试之。 [分析讨论] 通过实验,分析定义与引用数组的区别。...

    10天学会AVR和C语言_异步串口UART

    2、 安装软件(ICC AVR 和AVR STUDIO)及其使用,包括新建工程、程序下载,仿真调试;整板测试;板上资源。 3、 着重介绍一下USB接口的仿真器。 第二讲:AVR单片机的概述和C语言的基础知识 1、 AVR单片机的概述包括...

    C语言课程设计-考试报名管理系统

    运行、调试程序并截图,进行说明调试的目的与结果。初步学会软件测试。 第6章 小结 对本次课程设计过程中的收获、体会以及不足或存在的问题进行总结。 参考文献 按照要求列出至少10篇参考文献,注意撰写格式。

    DSP实验报告.pdf

    六、 实验结果 七、 实验感想 本次试验过程中我初步了解了 DSP 编程和实验箱的使用方法, 学会了使用软 件方式调试程序,为以后的实验打下一定基础。 DSP 实验报告 3 实验 2 片上外设实验 3——AD 采集实验 一、 ...

    Delphi android 编程入门教程

    2.1 另一种真机调试模式(如何设置手机进行安卓程序调试) 3 如何退出程序(实现直接退出,退出时对话框询问,最小化程序,再点击一次退出等功能) 4 安卓下对话框的标题和按钮的汉化(学会汉化对话框) 5 多窗口的...

    JAVA自学之路

    你怎么查? 当然是顺着生产线一站一站的查下来。 程序也是一样的,也是一系列语句完成后产生的结果。 写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错? 仔细分析这个现象的环节: ...

    vhdl编写基本CPU设计.zip

    外一个成品CUP专门运行监控程序,另外还能够将各种测试程序自动转换成用实验者所设计的指令系统表示的目标代码,并且能够在实验装置上运行、调试和测试所生成的目标代码。 有了这样的改进,我们做实验就有了新的...

    《DSP芯片原理及应用》试验课程

    通过本实验课程加强对理论课程的认识和掌握,学会使用集成开发环境CCS,使用DSP实验箱调试和编写功能程序,理解DSP的工程开发的过程和技术细节,学会分析问题和解决问题的能力。主要内容包括:CCS软件应用实验,...

    IEEE_电气工程师_数字信号处理_FORTRAN程序库-2

    你不会拿一个算法的C程序去发表吧。 ============================================= 该书出版后的三十五年后的今天,这些算法仍然占据着数字信号处理领域的重要位置。即使今天的处理器速度已经今非昔比,这些精炼...

    单片机原理及应用课程标准.doc

    掌握程序流程图的画法、子程序的编写方法、中断程序的编写方法、子程序和中断 调用、伪指令的熟练使用、熟练掌握顺序程序结构、循环程序结构、分支程序结 构,掌握仿真器的使用及结合软硬件调试程序。 二、学习领域...

    C语言入门经典(第4版)--源代码及课后练习答案

     本书的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员。 内容简介  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一。本书集综合性、实用性为一体,是学习C语言...

    IEEE_电气工程师_数字信号处理_FORTRAN程序库-4

    你不会拿一个算法的C程序去发表吧。 ============================================= 该书出版后的三十五年后的今天,这些算法仍然占据着数字信号处理领域的重要位置。即使今天的处理器速度已经今非昔比,这些精炼...

Global site tag (gtag.js) - Google Analytics