C语言程序的调试和步骤
调试程序一般应经过以下几个步骤: 1先进行人工检查,即静态检查。
在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。
这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。
而这一步骤往往容易被人忽视。
有人总希望把一切推给计算机系统去做,但这样就会多占用机器时间,作为一个程序人员应当养成严谨的科学作风,每一步都要严格把关,不把问题留给后面的程序。
为了更有效地进行人工检查,所编的程序应注意力求做到以下几点:应当采用结构化程序方法编程,以增加可读性;2尽可能多加注释,以帮助理解每段程序的作用;3在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。
这样既易于阅读也便于调试,各函数之间除用参数传递数据这一渠道以外,数据间尽量少出现耦合关系,便于分别检查和处理。
2在人工检查无误后,才可以上机调试。
通过上机发现错误称动态检查。
在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。
应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。
有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。
如果系统提示的出错信息多,应当从上到下一一改正。
有时显示出一大片出错信息往往使人感到问题严重,无从下手。
其实可能只有一二个错误。
例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息;有的是少了“}”或多了“}”有的是书写语句时忘记写“;”或是全角的“;”了,只要加上一个变量定义,或填加“};”就所有错误都消除了。
3在改正语法错误后,程序经过连接就得到可执行的目标程序。
运行程序,输入程序所需数据,就可得到运行结果。
应当对运行结果作分析。
看它是否符合要求。
有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。
有时,数据比较复杂,难以立即判断结果是否正确。
可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。
可以在计算的输出结果的程序地方加入一段输出到串口的程序,利用串口窗口可以方便看到结果的,比仿真的都好和直观。
例如,if语句有两个分支,有可能在流程经过其中一个分支时结果正确,而经过其它一个分支时结果不对等。
必须考虑周全。
事实上,当程序复杂时很难把所有的可能方案全部都试到,选择典型的情况作试验即可。
4 运行结果不对,大多属于逻辑错误。
对这类错误往往需要仔细检查和分析才能发现。
可以采用以下办法: 1 将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。
例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。
2 如果实在找不到错误,可以采用“分段检查”的方法。
在程序不同的位置设几个printf函数语句,输出有关变量的值,往下检查。
直到找到在哪一段中数据不对为止。
这时就已经把错误局限在这一段中了。
不断减小“查错区”,就可能发现错误所在。
3 也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。
当调试完毕,这些语句不要再编译了,也不再被执行了)。
这种方法可以不必一一去printf函数语句,以提高效率。
4 如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题,如有则改正之,接着修改程序。
5 有的系统还提供debug(调试)工具,跟踪流程并给出相应信息,使用更为方便,如KEILC51里的调试运行就很好用的,可以在命令的窗口输入程序中需要的数据和开关量、中断、I/O口的电平等来方便完成程序的运行,使用时要先打开Options for Target'Target1'(工程菜单里的目标‘TARGET1'属性)-----点DEBUG----选中左边use Simulator\load Application at sta\Go till main;按确定后退出到编辑画面,要先对源程序进行编译后没有错误才可以按主菜单上的调试按钮,进行调试的,F10为子程序运行式的单步、F11为单步调试;具体使用可以看本站提供的51单片机应用系统开发实例一书中的Dscope foe Windows一节。
可以下载本站上中文版的KIELC51就直观了。
总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于累积经验。
在程序调试过程中往往反映出一个人的水平,经验和科学态度。
希望读者能给以足够的重视。
上机调试程序的目的决不 是为了“验证程序的正确”,而是“掌握调试的方法和技术”,不要一直依赖仿真器来解决,要学会自己找问题,这样慢慢自己就会写出错误较少的实用的程序,站长就没有仿真器的哦,靠KEILC51里的软件仿真就解决了。
程序是如何编写的?
展开全部 编译程序、汇编程序属于系统软件。
系统软件:是能提高程序设计者的工作效率、方便用户使用、可以对计算机进行管理的软件。
包括:操作系统、监控软件、编译程序、汇编程序、数据库、标准程序库。
编译程序是把用高级程序设计语言或计算机汇编语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序,属于采用生成性实现途径实现的翻译程序。
编译程序以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出,编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序,是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。
汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。
采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。
它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。
汇编程序主要有简单汇编程序、模块汇编程序、条件汇编程序、宏汇编程序、高级汇编程序几种。
...
在c++中如何对程序进行调试
第一,要看你使用的是什么C++编程软件第二,要看你编写的C++程序是什么类型的程序那么先说一下Visual studio系列的吧,以2005为例,主页面是这样的,通过新建一个mfc应用程序,点击图片当中的【调试】->【启动调试】菜单或者直接按F5按钮,在你的代码当中设置断点即可进行调试,顺便说一下断点的快捷键是F9..
如何用visual studio2013编写简单C语言程序
首先打开vs2013,发现有新建项目 和 打开项目 的选项,选择新建项目。
之后会有一个新建项目的界面,左侧有各种语言的编写环境,比如VB,VC#,VC++,如果编写C语言就选择VC++,因为c++基本兼容C语言。
这时的项目不用添加后缀,这相当于一个大的工程。
选择好类型,写好项目名称之后点击确定。
点击下一步这里比较关键。
勾上空项目,不选的话因为程序会默认为你添加一些代码,用不上有时会编译出错。
比较适合初学者。
这时已经新建好一个项目了,右键源文件添加新建项。
添加新建项之后命名,C语言的代码一定要修改后缀,将.cpp改为.c,向程序说明这时一个C语言代码。
写好代码后调试运行,如果没有写让程序停留的代码就不要直接按F5,你可以按ctrl+F5调试。
平时默认为Debug,如果开发完成一个程序后给别人使用就要选择Release版的调试,这样别人在没有vs的环境下也可以使用。
分享
编译程序是()的软件
ADS?软件调试问题? ?状况一:刚学习使用ADS软件,在CODE?WARRIOR?FOR?ARM使用的过程中,发现有些*.MCP文件无法通过双击打开。
原来是该软件对中文路径不太支持,但是我们还是可以通过拖拽,和通过CODE?WARRIOR?FOR?ARM的菜单?FILE--OPEN--这两种方式打开。
? ??状况二:另一个问题就是在CODE?WARRIOR?FOR?ARM中编译通过后,我们点击工具栏上的调试按钮,虽然可以运行AXD调试软件,但是经常会提示? 'c:/documents?and?settings/****/default-1-2-0-0.ses'?could?not?be?loaded??? 必须从新配置AXD调试软件,在option--configure?target中选择ADP(硬件调试)或ARMUL(软件仿真),然后关闭AXD软件,再点击CODE?WARRIOR?FOR?ARM工具栏上的调试按钮,才可以正常启动AXD并调试刚才编译的项目。
比较麻烦。
通过比较c:/documents?and?settings/****/default-1-2-0-0.ses调试前后的变化,发现问题就出在这里,该文件是一个初始配置文件,调试目标文件之后,该文件就带上了调试目标文件的路径等多余信息,所以,AXD无法识别,自然就出现了'c:/documents?and?settings/****/default-1-2-0-0.ses'?could?not?be?loaded的提示。
我们只要在配置完成之后,把该文件的属性该为?只读,那么就不会在调试的过程中被修改了,以后也就不会出错了。
??调试程序是出现“default-1-2-0-0.ses”文件无法加载的问题。
解决方法有以下两种。
?? ?第一种,打开AXD->options->configure?target->H-JTAG.DLL(这个是JTAG的文件)?,再点击一下右边的configure,点击OK->OK。
关闭AXD。
重新在 ADS1.2按debug就可以了。
这种方法有个毛病:每次调试都要重复设置一次。
???第二种,要根治这个问题,首先要找出出现这个问题的根本原因。
因为我在调试S3C2410时是没有出现这个问题的,为何?原来我的工作目录使用了中文目录。
由于ADS对中文的支持不是很完善,所以不要把你的工程放在中文目录下(路径中不能有中文)。
如果有中文的话,在你运行AXD进行调试的时候会提供.SES文件找不到。
一旦出现这种情况,请设置Options->Configure?Target...在弹出的对话框里选择你的调试目录(一般选Armulate或者MultiICE)。
然后关掉AXD再来一遍。
学习编程的一般步骤是什么
学习编程,从何入手?1、计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
2、电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。
所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
3、计算机所能识别的语言只有机器语言,即由0和1构成的代码。
但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
4、目前通用的编程语言有两种形式:汇编语言和高级语言。
5、汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
它同样需要编程者将每一步具体的操作用命令的形式写出来。
汇编程序通常由三部分组成:指令、伪指令和宏指令。
汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
6、高级语言是目前绝大多数编程者的选择。
和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。
同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
7、高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
8、高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
9、编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。
现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。
《编程语言,你选哪一个》 虽然不是每个人都会成为编程高手,但你在使用软件的时候,也许会冷不丁地冒出个问号:这些神奇的软件是怎么编出来的?而对那些将投身于此的“大虾小虾”们,接下去的可能是:我什么时候也能编出个更好的软件来?好吧,那从哪里开始呢?编程语言名录繁多,选择一个适合自己的编程语言,是你首先要迈出的一步。
你了解最常见的编程语言吗?你知道最流行的程序开发环境吗? 你知道Basic、Pascal、C、C++和Jave家族这些常见的编程语言各自都有什么优点吗?如果你对这些都不是很清楚的话,那么下面这一部分你可不能错过。
基础篇 Basic: Basic是一种非常适合初学者学习的编程语言。
它简单易懂,其命令和语句一般都是英文单词或缩写,易于理解,便于记忆。
只要具有一些英语知识的人都可以很快地掌握它。
扩展地Basic语言常见地有:BASICA、GWBASIC、Quick Basic、Ture Basic和Turbo Basic。
其中比较好的是Turbo Basic,它是一种可编译的语言,所以它的速度更快、效率更高。
Turbo Basic不仅保持了Basic语言一贯的比较容易学习的特点,还具有像PASCAL语言那样严谨的基本控制结构。
Pascal: Pascal语言是一门结构化的语言,它具有丰富的数据类型和控制结构,简明易懂,所以特别适合与教学。
Pascal语言还是一种自编译的语言,这就使它的可靠性大大提高了。
在Pascal的各个版本中,尤以Turbo Pascal的功能最为强大。
如今,在许多学校的计算机语言课上,学的都是Pascal语言,用的都是Turbo Pascal。
C: C语言作为系统描述语言,既可以用来写系统软件,有可以用来写应用软件,自然受到广大用户的喜爱。
C语言有许多优点,它灵活性好、效率高、实用性强,而且对硬件的控制能力很强。
人们常把C语言称作中级语言,意指它是一门介于高级语言和汇编语言之间的语言。
C++: 随着软件规模的不断扩大,人们发现,使用传统的“数据结构+算法”的结构化编程模式已经难以适应软件的发展了。
这时,“面向对象+消息”的程序设计思想便逐渐被人们所注意。
对于C语言,人们发现当C语言程序的规模超过5万行时,程序就变得难以调试和维护。
这时,将面向对象的思想引入C语言变成了程序员的共同心愿。
于是,C++语言便应运而生了,它以C语言为基础,引入了面向对象的思想,成为目前最流行的编程语言之一。
...
转载请注明出处51数据库 » 软件编写编译调试步骤
夏至27287619