调试方法和技巧

调试方法和技巧
调试方法和技巧

调试方法和技巧

作者:非凡

便于调试的代码风格:

1.不用全局变量

2.所有变量都要初始化,成员变量在构造函数中初始化

3.尽量使用const

4.详尽的注释

VC++编译选项:

1.总是使用/W4警告级别

2.在调试版本里总是使用/GZ编译选项,用来发现在Release版本中才有的错误

3.没有警告的编译:保证在编译后没有任何警告,但是在消除警告前要进行仔细检查

调试方法:

1、使用Assert(原则:尽量简单)

assert只在debug下生效,release下不会被编译。

例子:

char* strcpy(char* dest,char* source)

{

assert(source!=0);

assert(dest!=0);

char* returnstring = dest;

while((*dest++ = *source++)!= ‘\0’)

{

;

}

return returnstring;

}

2、防御性的编程

例子:

char* strcpy(char* dest,char* source)

{

if(source == 0)

{

assert(false);

reutrn 0;

}

if(dest == 0)

{

assert(false);

return 0;

}

char* returnstring = dest;

while((*dest++ = *source++)!= ‘\0’)

{

;

}

return returnstring;

}

3、使用Trace

以下的例子只能在debug中显示,

例子:

a)、TRACE

CString csTest =“test”;

TRACE(“CString is %s\n”,csTest);

b)、ATLTRACE

c)、afxDump

CTime time = CTime::GetCurrentTime();

#ifdef _DEBUG

afxDump << time << “\n”;

#endif

4、用GetLastError来检测返回值,通过得到错误代码来分析错误原因

5、把错误信息记录到文件中

异常处理

程序设计时一定要考虑到异常如何处理,当错误发生后,不应简单的报告错误并退出程序,应当尽可能的想办法恢复到出错前的状态或者让程序从头开始运行,并且对于某些错误,应该能够容错,即允许错误的存在,但是程序还是能够正常完成任务。

调试技巧

1、VC++中F5进行调试运行

a)、在output Debug窗口中可以看到用TRACE打印的信息

b)、Call Stack窗口中能看到程序的调用堆栈

2、当Debug版本运行时发生崩溃,选择retry进行调试,通过看Call Stack分析出错的位置及原因

3、使用映射文件调试

a)、创建映射文件:Project settings中link项,选中Generate mapfile,输出程序代码地址:/MAPINFO: LINES,得到引出序号:/MAPINFO: EXPORTS。

b)、程序发布时,应该把所有模块的映射文件都存档。

c)、查看映射文件:见” 通过崩溃地址找出源代码的出错行”文件。

4、可以调试的Release版本

Project settings中C++项的Debug Info选择为Program Database,Link项的Debug中选择Debug Info和Microsoft format。

5、查看API的错误码,在watch窗口输入@err可以查看或者@err,hr,其中”,hr”表示错误码的说明。

6、Set Next Statement:该功能可以直接跳转到指定的代码行执行,一般用来测试异常处理的代码。

7、调试内存变量的变化:当内存发生变化时停下来。

常见错误

1、在函数返回的时候程序崩溃的原因

a)、写自动变量越界

b)、函数原型不匹配

2、MFC

a)、使用错误的函数原型处理用户定义消息

正确的函数原型为:

afx_msg LRESULT OnMyMessage(WPARAM wParam,LPARAM lParam);

3、谨慎使用TerminateThread:使用TerminateThread会造成资源泄漏,不到万不得已,不要使用。

4、使用_beginthreadex,不要使用Create Thread来常见线程。

参考资料:

《Windows程序调试》

EDI调试方法

E-CELL MK-2TM模块系统 模块可能需要先再生,再生时只需如常一样操作启动系统.但将产水排放直至合格为止,再生时产水电导率将从小于1MOHM/CM升高到大于16MOHM/CM. 通常开始都手动方式启动,但当流量和压力都设定好了以后,系统就可以自动运行,希望尽量以自动方式运行,来用PLC监控以便在操作条件不安全时停机. 4.2启动: 一旦模块系统具备启动条件,浓水管必须先用符合进水要求的已经充分冲洗的反渗透产水来灌满.开始运行后,浓水电导率将会升高.为了系统有效工作,浓水电导率应控制在150~600μs/㎝,因此某事情况下运行时需要在浓水管路中投入盐液以提高电导率. 启动前需要检查以下事项: 1.E-C ELL MK-2TM 模块端板间距 2.模块所有进出水接口都与系统管道连接好 3.电源、水的预处理及废水处理系统可以连续运行 4.管道已经冲洗完毕 5.现场电器接线已经测试完毕 6.所有阀门全部关闭 7.泵和整流器都处于”关闭”状态 8.安全设备已经安装并可以使用 启动的基本步骤有: 1.用符合进水条件的水充满系统 2.设定产水流量 3.启动循环泵并确定浓水流量 4.设定浓水排放流量 5.设定浓水进水压力 6.设定浓水出水压力 7.设定极水流量 8.启动整流器 浓水管路充水压力应低于40PSI(2.7BAR)充满→一旦水流连续流过浓水排放阀并没有气泡→灌泵. 调试步骤: ●确定淡水流量 1.将淡水进水阀门开启10~20% 2.关闭产水出口阀门 3.缓慢开启淡水进水阀门MK 4.调节产水排放阀门使每个MK-2模块淡水流量为1.70~3.41M3/H ●确定浓水和极水流量 1.关小浓水进水阀门使开度为10~20% 2.确定浓水循环泵进水阀门已打开 3.将浓水循环泵出口阀门开25% 4.关闭浓水旁路阀 5.确认浓水补充阀门开启

软件调试技巧

软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,

PLC程序现场调试的方法

P L C程序现场调试的方 法 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

PLC程序现场调试的方法——【非常重要】 02-04 16:42更新林慧玲分类:围观:625人次微信二维码 1、要查接线、核对地址 要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2、检查模拟量输入输出 看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3、检查与测试指示灯 控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4、检查手动动作及手动控制逻辑关系 完成了以上调试,继而可进行手动动作及手动控制逻辑关系调试。要查看各个手动控制的输出点,是否有相应的输出以及与输出对应的动作,然后再看,各个手动控制是否能够实现。如有问题,立即解决。 5、半自动工作 如系统可自动工作,那先调半自动工作能否实现。调试时可一步步推进。直至完成整个控制周期。哪个步骤或环节出现问题,就着手解决哪个步骤或环节的问题。 6、自动工作 在完成半自动调试后,可进一步调试自动工作。要多观察几个工作循环,以确保系统能正确无误地连续工作。 7、模拟量调试、参数确定 以上调试的都是逻辑控制的项目。这是系统调试时,首先要调通的。这些调试基本完成后,可着手调试模拟量、脉冲量控制。最主要的是选定合适控制参数。一般讲,这个过程是比较长的。要耐心调,参数也要作多种选择,再从中

3-2节 程序调试的方法

3-2节程序调试的方法 编程是一件需要认真和细心的工作。通过让学生从李明同学学习程序设计时所遇到的困难和他情感上所表现出来的“窘态”故事开始,道出程序调试不但需要技巧、更需要有耐心和毅力的道理,从而激发学生学习程序调试的兴趣和热情,拉开了本节的充幕。 接着,布置任务,让学生输入课本P83四段有错误的程序,要求学生自己探究,并改正程序。 最后分析程序运行的情况,总结出程序运行出错的四种类型: 一、拼写错误 1)在工程窗口中,看到红色文字显示的程序是有拼写错误的。 2)同时还要检查其它的拼写错误 Pring改为print Integr改为integer 2、编译时出现的错误 S应该改为a 3、运行时出现的错误 运行时的错误是指编译通过后,在执行程序时出现的错误,如用0作除数等。

例如:a=0的时候,将会出现0作除数的情形 4、逻辑错误 程序运行后,得出的结果不是正确的。这说明程序存在逻辑错误。逻辑错误产生 的原因很多,运算符使用不正确、语句次序不对、循环的设置不对等都可以产生 逻辑错误。 如这里的程序的出口应该是tree>=100 任务: P85 马上行动:

你和同学们能解决以上的问题吗?以合作、交流的方式大胆尝试一下,你会有意外的收获! 一、本节小结: 本节主要通过任务驱动、探究的形式,介绍了程序的错误类型,分析了产生错误的原因,程序的调试与排错的方法,让学生“从做中学”,进一步体验了程序调试的方法和技巧,培养了 学生调试程序的耐心和毅力,提高了学生程序设计的素养。 五、课外练习 编写一个程序,将从键盘输入的一个自然数进行因数分解,输出结果并上机验证。

CSC数字式母线保护装置调试方法

C S C-150数字式母线保护装置 调试方法 1. 概述 CSC-150母线保护装置是适用于750kV及以下电压等级,包括单母线、单母分段、双母线、双母分段及一个半断路器等多种接线型式的数字式成套母线保护装置(以下简称装置或产品)。装置最大接入单元为24个(包括线路、元件、母联及分段开关),主要功能包括虚拟电流比相突变量保护、常规比率制动式电流差动保护、断路器失灵保护、母联充电保护、母联失灵及死区保护、母联过流保护、母联非全相保护。装置由一个8U保护机箱和一个4U 辅助机箱构成,8U保护机箱共配置18个插件,包括8个交流插件、启动CPU插件、保护CPU插件、管理插件(MASTER)、开入插件1、开出插件1(含一块正板和一块副板)、开出插件2、开出插件3(含一块正板和一块副板)及电源插件;4U辅助机箱共配置7个插件,包括隔离刀闸辅助触点转接板(2块)、开入插件2、开入插件3、开入插件4、开入插件5、开入插件6,对需要模拟盘显示的用户还会配置一块模拟盘开关位置转接板。 2. 调试与检验项目 2.1 通电前检查 2.2 直流稳压电源通电检查 2.3 绝缘电阻及工频耐压试验 2.4 固化CPU软件 2.5 装置上电设置 a) 设置投入运行的CPU; b) 设置装置时钟; c) 检查软件版本号及CRC校验码; d) 整定系统定值; e) 设置保护功能压板; f) 整定保护定值。 g) 装置开入开出自检功能 2.6 打印功能检查 2.7 开入检查 2.8 开出传动试验

2.9 模拟量检查 a) 零漂调整与检查; b) 刻度调整与检查; c) 电流、电压线性度检查; d) 电流、电压回路极性检查; e) 模入量与测量量检查。 2.10 保护功能试验 a) 各种保护动作值检验和动作时间测量。 b) 整组试验。 2.11 直流电源断续试验 2.12 高温连续通电试验 2.13 定值安全值固化 3. 检验步骤及方法 3.1 通电前检查 a) 检查装置面板型号标示、灯光标示、背板端子贴图、端子号标示、装置铭牌标注完整、正确。 b) 对照装置的分板材料表,逐个检查各插件上元器件应与其分板材料表相一致,印刷电路板应无机械损伤或变形,所有元件的焊接质量良好,各电气元件应无相碰,断线或脱焊现象。 c) 各插件拔、插灵活,插件和插座之间定位良好,插入深度合适;大电流端子的短接片在插件插入时应能顶开。 d) 交流插件上的TA和TV规格应与要求的参数相符。 e) 检查各插件的跳线均应符合表1、表2和表3要求。 表1 CPU板跳线说明

实验一 Keil软件的使用及简单程序的调试方法

实验一 Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下: 几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程

名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示 单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。

实验一-Keil软件的使用及简单程序的调试方法

实验一Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下:

几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示

单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。 (3)将文件添加到工程中 单击“T arget 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。

CB调试方法

CSC-103B数字式超高压线路 保护装置 调试方法 CSC-103B数字式超高压线路 保护装置 调试方法 编制:王晶 校核:伍叶凯 标准化审查:梁路辉 审定:徐振宇 版本号: 出版日期:2004-07-30

1.目的 检测CSC-103B数字式超高压线路保护装置各插件元器件好坏及焊接质量,并进行整机调试,插件的硬件及回路的正确性检查,装置操作和保护功能的基本检查。 2.参考文件 《CSC-103B保护装置原理图》 《CSC-100B数字式超高压线路保护装置说明书》 技术管理室下发的《版本说明》 QB/ QB/ 3.硬件检查 3.1.所需设备和工具 CSC-103B线路保护装置一台,包括以下插件: 一块交流插件 两块保护CPU插件, 一块Master插件 一块MMI插件; 二块开入插件; 三块开出插件; 一块电源插件; 级以上测试仪一台 万用表一只 放大镜一只 打印机一台 3.2.单板焊接质量检查 直接观察或用放大镜检查各插件上有无元器件焊反、焊错、漏焊或虚焊现象。

3.3.通电前,外观和插件检查 3.3.1.检查本装置所有互感器的屏蔽层的接地线均已可靠接 地,装置外壳已可靠接地 3.3.2.检查装置面板型号标示、灯光标示、背板端子贴图、端 子号标示、装置铭牌标注完整、正确。参考最新的有效 图纸。 3.3.3.各插件拔、插灵活,插件和插座之间定位良好,插入深 度合适。大电流端子的短接片在插件插入时应能顶开。 3.3. 4.各插件跳线及短接线连接设置正确。 各插件跳线的设置要求: a)CPU1:在CPU的把手侧,有AD3、AD2、AD1、AD0四组跳线插针。跳线插针旁边标 有“H”和“L”两个符号,分别表示高电平和低电平。此CPU要求AD3、AD2、 AD1、AD0四个跳线插针设置成低电平。地址可以用四个二进制表示为0000(数值 0)。 CPU板上与光纤通信有关的两组跳线为: 1组(对应通道A):J9、J10、J11 2组(对应通道B):J12、J13、J14? 。 J9(J12) ---?软件/硬件控制选择。置“低”,时钟方式和通信速率由软件定值 中的控制字设置,J10(J13)、J11(J14)两位跳线不起作用;置“高”,时钟 方式和通信速率由J10(J13)、J11(J14)两位跳线来设置。 J10(J13 )--- 主/从时钟选择。在硬件控制模式下( J9(J12)置“高”), J10(J13)置“高”,装置光纤通信采用主时钟方式;置“低”,装置光纤通信 采用从时钟方式。 J11(J14) --- 64kbps/2Mbps选择。在硬件控制模式下( J9(J12)置“高”), J11(J14)置“高”,装置光纤通信速率采用64kbps;置“低”,装置光纤通信 速率采用2Mbps。 装置出厂时必须将上述两组跳线都依次设为:低、高、高。即装置

PLC程序的调试方法及步骤(精)

PLC程序的调试方法及步骤 PLC程序的调试可以分为模拟调试和现场调试两个调试过程,在此之前首先对PLC外部接线作仔细检查,这一个环节很重要。外部接线一定要准确无误。也可以用事先编写好的试验程序对外部接线做扫描通电检查来查找接线故障。不过,为了安全考虑,最好将主电路断开。当确认接线无误后再连接主电路,将模拟调试好的程序送入用户存储器进行调试,直到各部分的功能都正常,并能协调一致地完成整体的控制功能为止。 1.程序的模拟调试 将设计好的程序写入PLC后,首先逐条仔细检查,并改正写入时出现的错误。用户程序一般先在实验室模拟调试,实际的输入信号可以用钮子开关和按钮来模拟,各输出量的通/断状态用PLC上有关的发光二极管来显示,一般不用接PLC实际的负载(如接触器、电磁阀等)。可以根据功能表图,在适当的时候用开关或按钮来模拟实际的反馈信号,如限位开关触点的接通和断开。对于顺序控制程序,调试程序的主要任务是检查程序的运行是否符合功能表图的规定,即在某一转换条件实现时,是否发生步的活动状态的正确变化,即该转换所有的前级步是否变为不活动步,所有的后续步是否变为活动步,以及各步被驱动的负载是否发生相应的变化。 在调试时应充分考虑各种可能的情况,对系统各种不同的工作方式、有选择序列的功能表图中的每一条支路、各种可能的进展路线,都应逐一检查,不能遗漏。发现问题后应及时修改梯形图和PLC中的程序,直到在各种可能的情况下输入量与输出量之间的关系完全符合要求。 如果程序中某些定时器或计数器的设定值过大,为了缩短调试时间,可以在调试时将它们减小,模拟测试结束后再写入它们的实际设定值。 在设计和模拟调试程序的同时,可以设计、制作控制台或控制柜,PLC之外的其他硬件的安装、接线工作也可以同时进行。 2.程序的现场调试 完成上述的工作后,将PLC安装在控制现场进行联机总调试,在调试过程中将暴露出系统中可能存在的传感器、执行器和硬接线等方面的问题,以及PLC的外部接线图和梯形图程序设计中的问题,应对出现的问题及时加以解决。如果调试达不到指标要求,则对相应硬件和软件部分作适当调整,通常只

VB程序调试技巧

一,如果遇到了一些逻辑性很强的问题比如有循环什么的我的方法是在关键地方加入debug.print 变量 这样可以比较好地找到问题 二,msgbox 三,监视窗口,如下面的例子 For i=1 to 10000 A=sqr(i) next i 你想再监视当i=799时A的值,就可以添加监视,方法:点调试,添加监视,选择“当监视值为真时中断”,上面表达式框中写上i=799, 这样你按F5,运行程序,程序会在i=799时中断。其他选项你可以自己去琢磨一下。 一个程序如何顺利的“脱产”,调试的过程是非常重要的。学过、钻研过程序设计的人都有同样的感受,很多情况下,调试程序的过程会比程序编写的过程更为困难。任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。 程序中的典型错误类型 A类:语法错误。 B类:编译错误。 C类:属性设置错误。 D类:逻辑错误。 调试方法 方法一:利用“MSDN帮助菜单” “MSDN帮助菜单”是一个很好的自学工具,对于出现调试对话框的菜单来说,可以按下“帮助”按钮查看错误原因。 对于一些不是很清楚的函数格式、保留字的作用,也可以借助“帮助菜单”。 方法二:逐过程检查 主要检查代码是否写对,位置有没有错误,关键是要确定一段代码是在哪个事件控制下的。不妨先在脑海中把整个程序过一边,想一想究竟会有哪些事件发生(有些事件是人机互动的,例如:鼠标点击;而有些是机器自己执行的,这时要想到计时器的作用);然后想一想每一件事发生后有什么效果。我们代码所编写的一般就是事件发生后的这个效果,那么以此事件来决定代码所写的位置。 方法三:逐语句检查(顺序、语义) 主要检查每一句代码的顺序是否写对,语义是否正确。 把整个代码从头至尾地读一边,仔细思索每一段子过程什么时候执行,以及每一子过程中的每一句代码什么时候发生,必要时可以在程序段中插入Print语句分段查看;也可用注释语

调试程序的简单说明.

难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下: VC 调试篇 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard 创建的工程中包含的Debug Configuration 自动包含调试信息,但是是不是Debug 版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration 中增加调试信息,包括Release 版本。 为了增加调试信息,可以按照下述步骤进行: ? 打开Project settings 对话框(可以通过快捷键ALT+F7打开,也可以通过IDE 菜单Project/Settings 打开 ?选择C/C++页,Category 中选择general ,则出现一个Debug Info 下拉列表框,可供选择的调试信息方式包括: 命令行 Project settings 说明 无 None 没有调试信息 /Zd Line Numbers Only 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息

/Z7 C 7.0- Compatible 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等 /Zi Program Database 创建一个程序库(PDB,包括类型信息和符号调试信息。 /ZI Program Database for Edit and Continue 除了前面/Zi 的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使 #pragma 设置的优化功能无效 ? 选择Link 页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ?如果C/C++页中设置了Program Database 以上的选项,则Link incrementally 可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译,而不必每次都从头开始编译。调试方法: 1、使用 Assert(原则:尽量简单assert只在debug下生效,release下不会被编译。 2、防御性的编程 3、使用Trace 4、用GetLastError来检测返回值,通过得到错误代码来分析错误原因 5、把错误信息记录到文件中 位置断点(Location Breakpoint 大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码:

PLC程序现场调试的方法

P L C程序现场调试的方法 Prepared on 24 November 2020

PLC程序现场调试的方法——【非常重要】 02-04 16:42更新林慧玲分类:围观:625人次微信二维码 1、要查接线、核对地址 要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2、检查模拟量输入输出 看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3、检查与测试指示灯 控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4、检查手动动作及手动控制逻辑关系 完成了以上调试,继而可进行手动动作及手动控制逻辑关系调试。要查看各个手动控制的输出点,是否有相应的输出以及与输出对应的动作,然后再看,各个手动控制是否能够实现。如有问题,立即解决。 5、半自动工作 如系统可自动工作,那先调半自动工作能否实现。调试时可一步步推进。直至完成整个控制周期。哪个步骤或环节出现问题,就着手解决哪个步骤或环节的问题。 6、自动工作 在完成半自动调试后,可进一步调试自动工作。要多观察几个工作循环,以确保系统能正确无误地连续工作。 7、模拟量调试、参数确定 以上调试的都是逻辑控制的项目。这是系统调试时,首先要调通的。这些调试基本完成后,可着手调试模拟量、脉冲量控制。最主要的是选定合适控制参数。一般讲,这个过程是比较长的。要耐心调,参数也要作多种选择,再从中

选出最优者。有的PLC,它的PID参数可通过自整定获得。但这个自整定过程,也是需要相当的时间才能完成的。 8、完成上述所有的步骤 整个调试基本算是完成了。但最好再进行一些异常条件检查。看看出现异常情况或一些难以避免的非法操作,是否会停机保护或是报警提示。进行异常检查时,一定要充分考虑到设备与人身的安全! 整个调试基本算是完成了。但最好再进行一些异常条件检查。看看出现异常情况或一些难以避免的非法操作,是否会停机保护或是报警提示。进行异常检查时,一定要充分考虑到设备与人身的安全!

音频的基本调试方法

音频的基本调试方法 目录 一:音频的基本调试方法 (1) 1.1:需要调试的音频基本项如下 (1) 1.2:MTK调试音量大小的基本方法 (2) 1.2.1:进入META调试: (2) 1.2.2:工程模式的调试方法(*#3646633#) (4) 1.3:音频测试的基本方法 (5) 1.3.1用声压计测试声压(MIDI和MP3): (5) 1.3.2用示波器测量功率(MIDI,MP3,Receiver, Headset) (5) 1.3.3用数字万用表测量功率 (6) 1.4回音抑制 (7) 1.4.1普通通话时的回音: (7) 1.4.2蓝牙通话的回音 (7) 1.5 EQ均衡器的设置 (8) 二:音频器件的基本选型 (9) 三:音腔的评审 (9) 四:音频曲线的调试-CTA (9) 4.1CTA测试项目 (9) 4.2调试步骤 (10) 附录1:各项MTK音频的参考值 (13) 附录2:NXP各项音频设置 (14)

一:音频的基本调试方法 1.1:需要调试的音频基本项如下(√需要调试;X不需要调试) 具体的调试点在middle(level=3)和MAX(level=6)两点如下图,其余等级基本平分就好。

1.2:MTK调试音量大小的基本方法 1.2.1:进入META调试: 进入META在Audio tool的custom volume setting 里面设置,如图。 通过设计ADC(0-255)值来调节寄存器的值,从而调整增益。 其调试方法就是调节各选项卡里面的数值,通过不断调整及测试来确定最终的音频参数,其中值得注意的几项如下: 1:MIDI Melody下的level0-level6是用来调整MIDI铃声的大小(音源为手机内置的铃声), 2:MP3 MP3(音源在T卡上)的调节在16Level下的Max melody volume gain里面,所以音量只能设置最大值。

收音机调试步骤及调试方法.

收音机调试步骤及调试方法 一.AM、IF中频调试 1、仪器接线图 扫频仪频标点频率为:450KHZ、455KHZ 、460KHZ或460KHZ、465KHZ 、 470KHZ。 扫频仪 1、检波输出 2、3正负电源4、RF信号输入5、检波输入(INPUT)6频标点 信号输入(PUISE INPUT)7、水平信号输入(HOR、INPUT) 2:测试点及信号的连接: A:正负电源测试点(如电路板中的CD4两端或AC输入端) 正负电源测试点从线路中的正负供电端的测试点输入。 B:RF射频信号输入(如CD2003的○4脚输入)。 RF射频信号由扫频仪输出后接到衰减器输入端,经衰减器衰减后输出端接到测试架上的RF输入端,在测试架上再串联一个10PF 的瓷片电容后,从电路中的变频输出端加入RF信号 将AM的振荡信号短路(即PVC的振荡联短路),或将AM天线RF输入端与高频地短路,(如CD2003○16与PVC地脚短路。) C:检波输出端(如CD2003○11脚为检波输出端) 从IC检波输出端串一个103或104的瓷片电容接到测试架上的OUT输出端。再连接到显示器前面的INPUT端口上以观察波形。

3.调试方法及调试标准 将收音机的电源开关打开并将波段开关切换到AM波段状态,调整中频中周磁帽使波形幅度达到最大(一般为原色或黄色的中周), 并且以水平线Y轴为基准点,看波形的左右两半边的弧度应基本对 称,以确保基增益达到最大、选择性达到最佳。如图 标准:波形左右两边的弧度基本等等幅相对称, 455KHZ频率在 波形顶端为最理想,偏差不超过±5KHZ。。如果中频无须调试的,则 经标准样机的波形幅度为参考,观察每台机的波形幅度不应小于标准 样机的幅度的3-5DB,一般在显示器上相差为一个方格。 二、FM IF中频调试 1、器接线图 ①扫频仪频率分别为10.6MHZ,10.7MHZ,10.8MHZ至少三个频率点。 1、检波输出 2、3正负电源4、RF信号输入5、检波输入(INPUT)6频标 点信号输入(PUISE INPUT)7、水平信号输入(HOR、INPUT) ②测试点及信号连接;

PLC程序调试方法及步骤

来源:中国物资采购网时间:2010年5月6日11时20分【大中小】PLC程序的调试可以分为模拟调试和现场调试两个调试过程,在此之前首先对PLC外部接线作仔细检查,这一个环节很重要。外部接线一定要准确无误。也可以用事先编写好的试验程序对外部接线做扫描通电检查来查找接线故障。不过,为了安全考虑,最好将主电路断开。当确认接线无误后再连接主电路,将模拟调试好的程序送入用户存储器进行调试,直到各部分的功能都正常,并能协调一致地完成整体的控制功能为止。 1.程序的模拟调试 将设计好的程序写入PLC后,首先逐条仔细检查,并改正写入时出现的错误。用户程序一般先在实验室模拟调试,实际的输入信号可以用钮子开关和按钮来模拟,各输出量的通/断状态用PLC上有关的发光二极管来显示,一般不用接PLC实际的负载(如接触器、电磁阀等)。可以根据功能表图,在适当的时候用开关或按钮来模拟实际的反馈信号,如限位开关触点的接通和断开。对于顺序控制程序,调试程序的主要任务是检查程序的运行是否符合功能表图的规定,即在某一转换条件实现时,是否发生步的活动状态的正确变化,即该转换所有的前级步是否变为不活动步,所有的后续步是否变为活动步,以及各步被驱动的负载是否发生相应的变化。 在调试时应充分考虑各种可能的情况,对系统各种不同的工作方式、有选择序列的功能表图中的每一条支路、各种可能的进展路线,都应逐一检查,不能遗漏。发现问题后应及时修改梯形图和PLC中的程序,直到在各种可能的情况下输入量与输出量之间的关系完全符合要求。 如果程序中某些定时器或计数器的设定值过大,为了缩短调试时间,可以在调试时将它们减小,模拟调试结束后再写入它们的实际设定值。 在设计和模拟调试程序的同时,可以设计、制作控制台或控制柜,PLC之外的其他硬件的安装、接线工作也可以同时进行。 2.程序的现场调试 完成上述的工作后,将PLC安装在控制现场进行联机总调试,在调试过程中将暴露出系统中可能存在的传感器、执行器和硬接线等方面的问题,以及PLC的外部接线图和梯形图程序设计中的问题,应对出现的问题及时加以解决。如果调试达不到指标要求,则对相应硬件和软件部分作适当调整,通常只需要修改程序就可能达到调整的目的。全部调试通过后,经过一段时间的考验,系统就可以投入实际的运行了。 本文来自: 中国物资采购网https://www.360docs.net/doc/e38443318.html, 详细出处参考:https://www.360docs.net/doc/e38443318.html,/newsinfo/2010-5-6/201056-11200321719338297.html PLC程序现场调试指在工业现场,甩有设备都安装好后,所有连接线都接好后的实际调试。也是PLC程序的最后调试。现场调试的目的是,调试通过后,可交给用户使用,或试运行。现场调试参与的人员较多,要组织好,要有调试大纲。依大纲,按部就班地一步步推进。开始调试时,设备可先不运转,甚至了不要带电。可随着调试的进展逐步加电、开机、加载,直到按额定条件运转。具体过程大体是: 1)、要查接线、核对地址。要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2)、检查模拟量输入输出。看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3)、检查与测试指示灯。控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4)、检查手动动作及手动控制逻辑关系。完成了以上调试,继而可进行手动动作及手动

万用表调试方法

DIY万用电表调试方法 MF47 MF47-A TY360 TY360TRX TY960等型号 一、检查方法: 1.装配完线路板后,请仔细对照同型号图纸,检查元件焊接部位是否有错漏焊。对于初学焊接者来说,还需检查焊点是否有虚焊、连焊现象,可用镊子轻轻拨动零件, 检查是否松动。 2.检查完线路板后,即可按各型号万用表装配要求进行总装。总装方法参见各型号万用表装配步骤。装配完成后,旋转档位开关旋钮一周,检查手感是否灵活。如有阻 滞感,应查明原因后加以排除。然后可重新拆下线路板检查线路板上电刷(刀位) 银条(分段圆弧,位于线路板中央),电刷(刀位)银条上应留下清晰的刮痕,如 出现痕迹不清晰或电刷银条上无刮痕等现象,应检查电刷与线路板上的电刷银条是 否接触良好或装错装反。直至档位开关旋钮旋转时手感良好后,方可进入下一阶段 工作。 3.装上电池并检查电池两端是否接触良好。插入+、—表棒,将万用表档位旋钮旋至Ω档最小档位,将+、—表棒搭接,表针应向右偏转。调整0Ω、ADJ调零旋钮, 表针应可以准确指示在Ω挡零位位置。依次从最小档位调整至最大档位(R×1-蜂 鸣器- R×100k),每档均应能调整至Ω挡零位位置。如不能调整至零位位置,常见 故障如下:指针位于零位左边,可能是电池性能不良(更换新电池)或电池电刷接 触不良。重复2、3中的相关步骤后,本表基本装配成功,下面将进入校试工作。 二、校试方法: 基本装配成功后的万用表,就可以进行校试了。只有校试完成后的万用表才可以准确测量使用。工厂中一般均用专业仪表校准仪校试,这样便于大规模生产。产品参数也比较统一。DIY后的万用表如何校试呢?在业余情况下进行准确地校试是每一个工作者完成装配后的第一心愿。下面介绍在没有专业仪器的情况下,准确校试万用电表的几种方法。 (A) 业余校试万用表需准备下列设备: ① 3 1/2以上数字万用表1块。 ②直流稳压电源1台(根据情况,可选用任何直流电原,也可以直接用9V、 1.5V电池替代)。 ③交流调压器1台(功率无要求)如没有,也可选用多抽头交流变压器220V/5V、 10V、36V ……1只(变压器功率无要求,如户没有多抽头电流变压器,可 选用任何一种初级220V,次级最好在10V以下的电源变压器)。 ④普通电阻若干(5%精度就可以)。 (B) 基准档位校试: 首先将基本装配完成的万用表档位旋转至直流电流档(DCmA)最小档47、47-A、960、TY360为50μA;TY-360TRX为100μA,调试设备连接见图1:

程序调试步骤

一、认识调试功能 在组建(build)菜单中,点击开始调试(start debug),在其下级子菜单中,包含了启动调试器运行的各项子命令(如图1所示) 图1 开始调试菜单 各子命令及其功能如下: ?Go:从程序中的当前语句开始执行,直到遇到断点(后面讲)或遇到程序结束。 ?Step Into:控制程序单步执行,并在遇到函数调用时进入函数内部。 ?Run to Cursor:在调试运行程序时,使程序运行到当前光标所在位置时停止,相当于设置了一个临时断点。 二、单步调试代码 利用图1菜单中的Step into功能或按F11键,进入单步调试状态,有一个箭头指向程序的第一行,每按一次F11键,程序再向前执行一行语句,如图2所示。

图2 开始调试后的界面 我们对图2的界面进行观察。 首先,菜单中增加一个调试(debug)菜单,如图中①处,下面是菜单中的部分功能(鼠标浮到上面时,会有提示,请试一试。) ?Step Into(F11):单步调试程序,遇到调用函数时,进入函数内部逐步执行; ?Step Over(F10):也是单步调试程序,遇到调用函数时,并不进入函数内容执行; ?Step Out:调试程序时,从正在执行的某个嵌套结构的内部跳到该结构的外部,常用于知道调用函数中不存在错误的情况; ?Run to Cursor(CTRL-F10):调试程序时,直接运行到插入点处。 其次,和当前正在执行的语句相关的变量,以及其当前的值显示在了②处。 再次,黄色箭头代表了正在执行的位置。 【练习1】 下面,针对求1+2+3+...+100的程序,体验单步执行。步骤: (1)编写如图所示求1+2+3+...+100的程序,排除编译错误; (2)按前述开始单步执行,用“Step Into(F11)”持续执行,在执行过程中,注意观察变量的变化。 ?调试中,要将自己的预期和计算机执行的结果进行比较,当发现不一致,恭喜,问题找到了。

程序调试方法

程序调试方法 李应洪2005-8-12 一、CommConstants.java文件的写法,里面注意按模块写。‘是’和‘否’用‘1’、‘0’ 二、Tomcat无法启动,先查看log,也行是java文件未完全编译,也有可能是web.xml或者Config.xml 文件配置问题。 三、Java程序 1.在发生异常的时候,我们是先尽快定位到关键的地方,如找不到,先不要急于每个方法里面 去单步跟踪Step into,而是先在几个自认为可能出错的程序段上Step over,肯定会找出是某 个段出现问题,然后在逐渐细化。 2.调试主要看一下几个关键点:设置断点Breakpoints,查看变量Variables,添加表达式 Expressions,查看控制台console。 3.设置断点:一般是在关键地方设置断点,先找到关键点,然后将该关键点细化;再在关键点 里面设置断点,依次找出Bug。 4.查看变量Variables:在程序运行的当前java类里面,可以查看该类里面的任何属性(包括 Entity,Entity又有属性),这样一层一层的查看参数与变量的值。 5.单步跟踪到每个方法里面Step into,跟踪某个语句Step over,跟踪某方法侯返回Step return。 6.添加表达式:表达式其实是属于变量的一部分,当你想关注确定的变量的时候,可以通过添 加表达式来调试更为直观。 7.查看控制台:控制台是我们找出Bug关键点的平台。在控制台里面可以直接定位到某个文件 的某个具体的方法或者某个语句,而且可以在控制台直接链接到对应的语句去。 8.Java文件的错误除了了在控制台会出现外,在Jsp页面还会出现。在Jsp页面出现的Java文 件的错误,也会表现的页面,同时会指出出错的地方。定位到行代码。 9.Java程序出错频率最高的地方: 1)空指针NullPoint,当一个class或者变量为null的时候,如果你在调用它的方法,系统 会抛出空指针异常。一般会有: a)rkdBiz= (CC_RkdBiz) BaseObjectFactory.getBaseObject("https://www.360docs.net/doc/e38443318.html,_RkdBiz"); 如果rkdBiz=null,再rkdBiz.insert();就会出现异常。因此,需要先再ClassFactory.xml 文件里面先配置实例化文件。 b)CC_RkdEntity rkdEntityTemp = this.selectRkd(conn, ryEntity, rkdEntity.getRkdID()); if (rkdEntityTemp != null) { // 组织数据 rkdEntityTemp.setGysMc(rkdEntity.getGysMc()); } c)for (int i = 0; i < rkdEntity.getRkdMxEntityArray().length; i++) { //需要加上rkdEntity.getRkdMxEntityArray()!=null的判断 } d)// 获得最大ID,转化为long型,赋值给实体对应的属性 SequenceNoSeeker sequenceNoSeeker = new SequenceNoSeeker(); rkdEntity.setRkdID(Long.valueOf(sequenceNoSeeker.nextSequenceNo(conn,

C Free 5程序调试方法

C Free 5.0 程序的单步调试 创建一份新的代码文件 可直接点击“文件”下的白色图标,或点击“文件”选择“新建”,或按快捷键“Ctrl + N”(C Free 5.0默认情况下新建的代码文件为.cpp 格式,可在“工具”、“环境选项”、“新建文件类型”中更改,C语言标准格式为.c 格式) 基于实例的C程序调试介绍 一、查看变量的内容 # include int main(int argc, char* argv[]) { int i; int sum; sum=0; for(i=1;i<=10;i++) sum=sum+i; printf("sum=%d",sum); return 0; } 第一步,打开C Free 5.0,输入上面的代码。 第二步,把光标移到“sum=0;”这一行,按F10 它的作 用是设 一个断 点,程序 运行到 这里时, 会停下 来。也就 是说,接 下来,程 序必须 通过按 F7键单 步运行 了。 第三步: 按F9 (开始调试) 我们发现有一箭头停留在这句语句上,它指示程序停留的位置,而箭头所在的语句(“sum=0;”)还没有执行。事实上,我们可以通过看一下内存变量sum的内容来验证。方法是这样的: 打开“调试”下的“监视”,或者按快捷键“Alt + 3”。 在“监视”的空白处点击鼠标右键,选择“添加监视”。

输入需要监视的变量名,这里输入为sum 这时我们可以在监视窗口中看到sum的内容不为0,而是一个随机的值。 第四步,我们按一下F7(进入),我们发现sum的内容变为0了。这说明“sum=0;”这句语句被执行了。 我们还可以用同样的方法看一下i的内容。 只需要鼠标点 第六步,一步一步地按F7,我们可以发现在单步执行for循环语句的时候i和sum的内容在不断变化。当退出循环时,我们发现i的内容为11(因为变量i的内容为11,i<=10这个条件不满足,所以程序退出循环)。 附带提一下,当程序已经执行了“sum=0;”这一句语句后,如果我们直接把光标移到“printf("sum=%d",sum);”,然后按Ctrl+ F8,我们可以直接把上面的for循环都执行了,而不必一步一步地按F7。在实践中,为了查找程序的逻辑错误,我们往往要单步运行该程序好几遍。如果已经通过单步调试验证某一段语句(如一个for循环语句或者几个用户定义的函数)正确了,我们就可以用Ctrl+ F8跳过这段语句,直接运行到还未测试的语句。二、F7(进入)和F8(跳过)的区别 # include int add(int m,int n) { int s; s=m+n; return s; } int main(int argc, char* argv[]) { int i=1; int j=2;

相关文档
最新文档