程序一般不会一次运行就成功,几乎总包含一些错误。词法、语法方面的错误在编译时就可以发现并加以改正,而一些语义上的错误就难以发现,所以常常出现运行结果不正确甚至产生不了结果的情况,这就需要对程序进行跟踪调试以发现并改正错误。现在所有的高级语言都有一个积编辑、编译、运行、调试功能为一体的集成环境。
跟踪调试是一种有效的调试程序的方法,是一种通过人工控制程序执行过程,比对主观和客观的程序执行过程和中间结果以发现和改正错误的调试程序的方法。在TC环境中是通过Run和Debug菜单中的命令实现跟踪调试的。表一和表二是有关命令的介绍。
表一 Run菜单命令
命令 Program reset (程序重启) Run (运行) Go to cursor (执行到光标处) Trace into (进入跟踪) step over (单步执行) 快捷键 功能 中止当前的调试,释放所有分给程序的空间。使用Ctrl-F2 此键后可以重新开始调试程序 一般情况下从头开始执行完整个程序 Ctrl-F9 如果在程序中设置了断点,则从一个断点(或从头)执行到另一个断点 程序从当前位置运行到编辑窗口光标所在的行,如F4 果编辑窗口不含可执行的语句则显示一个警告信息 逐行运行程序,遇到函数调用语句时,进入到被调F7 用函数继续跟踪执行。 逐行运行程序,遇到函数调用语句时,运行完被调F8 用函数而不进入跟踪。 表二 Debug菜单命令
命令 Inspect Evalute/Modify Watches Add watch Delete watch Edit watch Remove watches Toggle breakpoint BreakPoints.... 快捷功能 键 Alt-F4 观察某些变量在内存的存储情况 Ctrl-F4 计算变量或表达式的值,可以修改某些简单变量的值 Ctrl-F7 增加监视表达式 删除监视表达式 编辑监视表达式 all 删除所有监视表达式 Ctrl-F8 删除或设置断点 断点设置情况的观察 以上两个表格中的命令如何使用呢?一般情况下是一边使用Trace into(F7)或step ove(F8)命令跟踪控制程序的执行,一般在观察窗口(Watch)监视某些变量的值与主观预期的是否一致,出现不一致的地方查找产生不一致的原因,以便找出程序中的错误。在跟踪调试的过程中注意以下问题:
(1)已经调试正确的地方可以设置断点,不需要所有的程序每次都一行一行执行。
(2)设置断点的方法是:把光标移到要设置断点的地方,使用Toggle breakpoint(Ctrl-F8)命令
(3)可以先用step ove(F8)命令跟踪调试,发现有不正确的地方在重新用Trace into(F7)调试。
(4)程序调试的一般思路是:先检查输入数据是否正确,再检查每个函数是否正确。可以分块分段的调试。
在程序中经常会出现的错误有: (1)输入数据时一般变量名前面没有&
(2)输入字符串时字符数组名就表示地址, 不需要再加&
(3)输入数据尤其是从文件中输入数据时数据输入的格式必须严格与输入的数据格式一致。如输入数据12 ABC x 34,则输入格式应该为“%d %s %c %d”,而不能是“%d%s%c%d”。 (4)使用数组时密切注意不要越界
(5)不要使用悬空的指针。即定义了指针*p,如果没有给p赋过值,应当理解为p不指向任何地方,不能使用*p。
(6)注意结构体类型变量和指向结构体变量的指针的使用方法是不同的。 (7)注意变量的作用域(使用范围),注意参数的传递形式。
另外,在程序执行正确的基础上,可以使用TC的File菜单下的Dos Shell命令,在DOS下执行“程序名>文本文件名”命令把程序的执行结果放到文本文件中去。
吴敏华
2003年10月29日
因篇幅问题不能全部显示,请点此查看更多更全内容