首页 > 编程知识 正文

调试文件的程序时要注意什么,系统调试的步骤是什么

时间:2023-05-05 12:21:37 阅读:111635 作者:4699

1 .为什么要调试和调试程序? 程序调试是指在将编写的程序投入实际执行之前,通过手工或编译器等方法进行测试,纠正语法错误和逻辑错误的过程。 这是保证计算机信息系统正确性的必不可少的步骤。

程序在测试期间执行错误,无法根据提供的错误消息准确确定错误原因和错误位置。

根据测试时发现的错误信息和调试工具跟踪的提示信息,结合两者综合判断错误发生的原因和位置。 错误原因确定具体错误位置*,便于最终修正。

测试本身也是程序调试的一部分。

调试是验证程序的执行是否符合自己的设计。

2 .调试原则1、头脑分析考虑错误征兆的相关提示信息。

二、避开死胡同。 同样的问题已经验证完毕,方法行不通。 有必要这样改变想法处理问题。

三.只以调试工具作为查找错误位置和错误原因的手段。 利用调试工具澄清程序中数据流的逻辑,有助于思考,但不能代替思考。 因为调试工具只是辅助性地定位错误的方法。 要解决实际问题,需要根据调试提示信息,自己判断并考虑正确的处理方法。

四、避免使用启发式,最多以此为最后手段。

五、改正错误的常见错误之一是只改正了这个错误的征兆或这个错误的表现,而没有改正错误本身。 如果提出的修正不能说明与这个错误相关的所有线索,表示只修正了一部分错误。 必须找出问题的根源。 考虑为什么会引起这样的错误,设计上是否有困难。

3 .调试器的思想是先熟悉系统功能的业务,熟悉业务后,根据业务功能进行测试并传递业务数据(业务生成数据,数据体现业务)。

发生错误时,首先要考虑并了解发生此问题所依赖的业务数据流程。

例如,单击表单后发生错误。 在这种情况下,点击发送按钮后,需要考虑应该发生什么样的数据流。 单击“提交”按钮后,此按钮会触发提交表单的操作指向控制层中的哪个方法或js脚本中的哪个函数,并指示下次在接收数据后调用控制进程方法

在这个过程中,业务数据按照业务流程的逻辑流动。 根据页面上显示的错误症状和错误消息,推测此错误可能发生在此业务数据流的何处,并确定调试断点的位置。 调试,找出错误原因,提出解决方案,解决后再次测试。

4 .程序调试步骤方法1 )根据错误提示信息及业务功能逻辑推理等相关信息【错误征兆提示信息】输入可能会导致错误发生的位置

错误日志信息位置控制错误发生位置

日志信息的输出位置一个是控制台的输出,用此时最及时的方式,在程序运行中可以简单地看到日志输出信息。 第二个是将日志信息输出到日志文件,根据项目的要求构成日志关联信息[日志输出等级、日志输出路径]

这些日志信息分类如下

【1】系统程序代码中自己标记的日志信息

错误日志

如果程序运行出现错误,日志文件或控制台将在输出时输出到标记的日志信息中,并根据输出的标记信息定位到工具搜索打印特定日志的方式。

【2】错误信息中没有我们标记的日志,运行程序时发生错误导致的异常错误信息如下所示。

1 ) 2019-07-01-13-05 [ http-nio-192.168.200.169-8443-exec-1 ] [ org.thyme leaf.template engine ] exceptionprocessingtemplate ' findflpclist ' : anerrorhappenedduringtemplateparsing [ template 3360 ' class path resource ] fiource org.thyme leaf.exceptions.templateinputexception : anerrorhappenedduringtemplateparsing (模板: ' classpathresote ' (2) caused by : org.atto parser.parse exception : exceptionevaluatingspringelexpression 3360 ' strings.substring (ff 10 ) (template: ) findflpclist(-line27,col 25 )3) caused by : org.thyme leaf.exceptions.templateprocessinged

cList" - line 27, col 25)4》Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 10这种在日志文件或控制台中输出的异常错误信息,我们看日志错误信息按照这种思路1》中表示了错误发生的位置,比如:An error happened during template parsing (template: "class path resource [templates/findFlpcList.html可以推测出发生错误的地方应该templates/findFlpcList.html文件中,原因是An error happened during template parsing模板解析时出错。在调试排查错误位置点时重点就可以在代码中的查找findFlpcList.html文件。2》、3》、4》的 Caused by中就显示了错误造成的原因。比如:Exception evaluating SpringEL expression: "#strings.substring(flpcDTO.createTime,0,10)" (template: "findFlpcList" - line 27, col 25)就显示了在模版findFlpcList 的27行 "#strings.substring(flpcDTO.createTime,0,10)"发生 SpringEL expression异常紧接着看下一句Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 10可以看出错误原因就是字符索引越界了,这样我们就可以推测可能为flpcDTO.createTime 取值有问题或者(0,10)截取不对。下来要做的就是 将flpcDTO.createTime 的值打印输出 查看具体值是什么,判断错误发生原因。这一步就是下面的调试。

​ 2.1)在IDE中进行启动debug调试模式,进行***标记断点***”“ 。注意:一般打断点的方式及位置是

​ 【1】在有可能发生错误的方法的第一行逻辑程序打程序断点。

​ 【2】方法中最有可能发生错误的那一行打程序断点。

​ 【3】在程序运行到断点位置暂停时,进行下一步调试,这时需要特别***注意观察***程序运行的每一步的数据是否为业务流程处理的正确数据。

​ 2.2)打印输出相关信息 ->system.out.println()

​ 【1】打印信息在方法中最有可能发生错误的那一行上一行或下一行,将程序执行的参数、返回结果值在控制台进行输出,检查输出的结果值是否为程序执行咱们想要的结果,进而判断错误发生点。

​ 【2】这种打印输出信息的方法也是在某些不支持debug的系统调试的一个重要方法。

​ 3)在打断点和标记打印输出后,现在开始进行debug模式调试。

​ 当程序运行到断点,这时程序在一个暂停状态,我们需要进行程序单步向下执行,观察每一步中的输入参数数据是否正确或调用方法的返回值数据是否正确,当程序运行到一个方法时我们可以继续单步向下执行不管方法内部的逻辑只关心返回值,也可以使用程序调试方法中的进入方法内部继续追踪程序(进入方法内部后继续单步执行或跳出方法内部),直到程序执行发生错误,判断是否为程序错误发生的实际位置

​ 另一种情况当程序运行起来后,业务处理发生错误,并没有进入我们的断点或打印输出语句,这时就是我们推测的程序发生的位置不对,需要根据错误信息和业务处理流程逻辑重新推测错误发生位置,重新再次进行第2步。

​ 4)当查找问题时注意将问题细化拆解,看看一个大问题中,程序正确执行到哪一步,精确定位错误点。

5.1后台调试工具

调试的主要方法,(1)单步走 (2)进入方法内部(3)跳出方法,不管在那个工具中应该都有这样的功能,只是这些功能的快捷键不同。下面介绍几种工具

idea的debug调试功能

1)向下单步执行 [step over F8] ,就是程序一句一句的执行。

2)进入内部[step into F7],就是进入调用方法的内部,接下在单步执行,一句一句的检查程序的执行情况。

强制进入内部[force step into Alt+shifit+F7]

4)跳出内部 [step out shift+F8] 就是跳出方法。

eclipse的debug调试功能

1)进入内部[step into F5]

向下单步执行 [step over F6]

3)跳出内部 [step return F7]

日志控制台的输出logger.error()、logger.info(),根据日志信息提示,寻找问题出错的位置及出错原因。常说一句话“看日志或控制台有没有报错输出。“ 自己指定的system.out.println() 的打印输出,这种方式是在自己根据预测的错误点的位置进行打印相关信息,进而验证和查看自己对错误原因及错误位置的定位。

模拟浏览器发送请求的工具 有: Postman、curl

5.2.前台浏览器调试工具方法

和后端调试工具应具有的调试功能相似,

在chrome,fireFox、ie、qq、360、浏览器中的调试快捷键通常都为 F12

按下F12快捷键进入调试模式,浏览器的调试目标 针对 js 、html、css 样式。
打印输出 console.log()、弹出信息方式alert()。

js脚本调试

html及css调试

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。