程序调试简介
Delphi提供了一个功能强大的内置调试器(Integrated Debugger) 因而对程序的调试不用离开集成开发环境(IDE)就可以进行
程序错误基本可以分为两类即运行时间错和逻辑错所谓运行时间错是指程序能正常编译但在运行时出错逻辑错是指程序设计和实现上的错误程序语句是合法的并顺利执行了但执行结果却不是所希望的
对于这两类错误调试器都可以帮助你快速定位错误并通过对程序运行的跟蹤和对变量值的监视帮助你寻找错误的真正原因和解决错误的途径
程序调试的主要内容可以概括为如下的几方面
调试的准备和开始
控制程序的执行
断点的使用
检查数据的值
程序调试只有用户实际上机操作才能真正掌握在这一节中我们主要对调试中的主要问题和一些关键点进行介绍至于一些很细小的问题相信读者可以在上机实际应用中掌握因而没有列出
调试的准备和开始
在程序开发过程中程序编码和调试是一个持续的循环过程只有在你对程序进行了彻底的测试后才能交付最终用户使用为了保证调试的彻底性在调试前应制定一个详细的调试计划一般说来应该把程序划分为几个相对独立的部分分别进行调试以利于错误的迅速定位确保每一部分程序都按设计的要求运行
调试计划准备好后就可以开始程序的调试
开始一个调试过程包括
编译时产生调试信息
从Delphi里运行你的程序
在程序调试过程中程序的执行完全在你的控制之中你可以在任何位置暂停程序的执行去检查变量和数据结构的值去显示函数调用序列去修改程序中变量的值以便观察不同值对程序行为的影响
产生调试信息
要使用内部调试器必须选中Option| Environment菜单References页的Integrated Debugging检查框缺省情况下该框被选中
在开始调试前需要使用Symbols Debug Information(调试符号信息)编译工程文件调试符号信息包含了一个符号表能够使调试器在程序的源代码与编译器产生的机器代码间建立联系这样在程序执行中可以同时查看对应的源代码
Delphi 在缺省情况下自动产生调试符号信息在集成开发环境中的开关选项是Option|project菜单Compiler Options页的Debug Information and Local Symbols检查框
当产生的调试符号信息供内部调试器使用时编译器把调试符号表储存在每个相应的dcu文件中
如果希望在集成环境外使用Turbo Debugger则需要把调试信息储存在最终的 exe文件中为此需要选定Option|Project菜单Linker页的Include TDW Debug Info检查框
由于储存调试信息大大增加了执行文件的大小因而调试完成后应重新生成一个不包含调试信息的执行文件
运行程序
通过调试器(包括内置调试器)运行程序当程序处于等待状态时调试器可以获得控制利用调试器的功能来检查当前程序的状态通过合理布置屏幕显示使应用程序运行窗口和Code Editor(代码编辑器)互不重叠可以让用户在它们间方便地切换以观察代码执行的效果
如果希望使用命令行参数来调试程序则可以通过Run|Parameters 菜单打开运行参数对话框进行设置
程序运行的控制
程序运行控制的方法和使用如下表
表 程序运行控制的方法和使用途径
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
方法 使用途径
───────────────────────────────
运行到光标位置 ● Code Editor加速菜单的Run to Cursor项
(Run to Cursor) ● Run主菜单的Run to Cursor项
● F
跟蹤(Trace Into) ● Run主菜单的Trace Into项
● Trace Into加速按钮
● F
步进(Step Over) ● Run主菜单的Step Over项
● Step Over加速按钮
● F
运行到断点 设置断点并按正常方式运行
暂停程序执行 Run主菜单的Program Pause项
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
跟蹤和步进都是一种单步执行方式但步的含义不同对跟蹤而言它一次执行一条简单程序语句当碰到包含调试信息的函数或过程调用时则跳入该函数或过程并执行其第一条可执行语句对步进而言它一次执行一条当前模块的可执行语句而不管该语句是否是函数或过程调用
运行到光标位置和运行到断点都是程序正常运行到某一确定的源代码位置而后进入调试状态但相对于运行到光标位置而言运行到断点更为灵活因为断点一次可设置多个同时也可以对断点设置一定的条件只有满足该条件程序运行才会中止
返回目录DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南
Java程序性能优化让你的Java程序更快更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
[] [] [] []