资源描述
C语言上机程序调试功能键及常见错误提示
1.常用健
<F10> : 激活系统菜单
<F6> : 将光标在编辑窗口和、信息窗口之间切换
<F3> : 加载<load>一个文件
<Alt>+<F5> : 查看程序运行结果
<F1> : 得到有关编辑器在线帮助
<Ctrl>+<F1> : 得到有关C语言的在线帮助
<Ctrl>+<Break> : 终止正在运行的程序
2.块操作
<Ctrl> KB: 定义块首
<Ctrl> KK: 定义块尾
<Ctrl> KV: 块移动
<Ctrl> KC: 块复制
<Ctrl> KY: 块删除
<Ctrl> KH: 取消块定义
3.查找、替换和删除操作
<Ctrl> QF: 查找字符串
<Ctrl> QA: 查找并替换字符串
Option: G(全程), B(向文件头), N(直接替换)
<Ctrl> Y : 删除一行
<Ctrl> QY: 删除从光标位置到行末的所有字符
4.编译中的常见错误
(1) 警告类错误
?‘XXX’declare but never used 变量XXX已定义但从未用过。
?‘XXX’is assigned a value which is never used 变量XXX已赋值但从未用过。
? Code has no effect 程序中含有没有实际作用的代码。
? Non-portable pointer conversion 不适当的指针转换,可能是在应该使用指针的地方用了一个非0的数值。
? Possible use of ‘XXX’before definition 表达式中使用了未赋值的变量
? Redeclaration of ‘main’ 一个程序文件中主函数main不止一个。
? Suspicious pointer conversion 可疑的指针转换。通常是使用了基本类型不匹配的指针。
? Unreachable code 程序含有不能执行到的代码。
(2) 错误或致命错误
? Compound statement missing } in function main 程序结尾缺少括号}。
? “}”expected; “(”expected等 复合语句或数组初始化的结尾缺少“)”;“(”。
? Case outside of switch case 不属于Switch结构,多由于switch结构中的花括号不配对所致。
? Case statement missing ‘:’ switch结构中的某个case之后缺少冒号。
? Constant expression required 定义数组时指定的数组长度不是常量表达式。
? Declaration syntax error 结构体或联合类型的定义后缺少分号。
? Declaration was expected 缺少说明,通常是因为缺少分界符如逗号、分号、右圆 括号等所引起的。
? Default outside switch Default部分放到了switch结构之外,一般是因为花括号不匹配而引起的。
? do statement must have while do语句中缺少相应的while部分。
? Expression syntax 表达式语法错。如表达式中含有两个连续的运算符
? Extra parameter in call ‘fun’ 调用函数fun时给出了多余的实参。
? Function should return a value 函数应该返回一个值,否则与定义时的说明类型不匹配。
? Illegal use of pointer 指针被非法引用,一般是使用了非法的指针运算。
? Invalid pointer addition 指针相加非法。一个指针(地址)可以和一个整数相加,但两个指针不能相加。
? Lvalue required 赋值运算的左边是不能寻址的表达式。
? Misplaced else 程序遇到了没有配对的else
? No matching 表达式中的括号不配对。
? Pointer required on left side of_> 在“_>”运算的左边只能允许一个指针而不能是一个一般的结构体变量或联合类型的变量。
? Statement missing; 程序遇到了后面没有分号的语句。
? Too few parameters in call 调用某个函数时实参数目不够。
? Unable to open include file ‘XXXXXXXX.XXX’ 头文件找不到。
? Unexpected }或:或{ 在不希望的地方使用了}或:{。
? Undefined symbol ‘X’in function fun 函数fun中的变量X没有定义。
5.连接中的常见错误
主要错误类似于“undefined symbol _print in modula xxx”(print没有定义),通常是函数名书写错误。
6.运行中的常见错误
?Abnormal program termination 程序异常终止。通常是由于内存使用不当所致。
?Floating point error : Domain 或Divide by 0 运算结果不是一个数或被0 除
?Null pointer assignment 对未初始化的指针赋值,程序有严重错误。
?User break 在运行程序时终止。
7.程序的跟踪调试
利用Run菜单可以进行程序的跟踪调试
(1) GO to Cursor (<F4>)——选择该选项使程序执行到光标所在行
首先将光标移到某行(一般为可执行),选择该功能项,则程序执行到该行的前一行暂停。此时程序处于跟踪调试状态,并有亮条显示在暂停处,此时可以查询变量或表达式的值。
(2) Trace into (<F7>)——执行一条语句或一行暂停
此时程序处于跟踪调试状态,并有亮条显示在暂停处。该选项可跟踪到被调函数的内部。
(3) Step over (<F8>)——执行一条语句或一行暂停
此时程序处于跟踪调试状态,并有亮条显示在暂停处。该选项将自定义函数当作一个语句执行,不跟踪到函程序的内部。
(4) Debug菜单
程序处于跟踪状态时,可使用该菜单的选项。
其主要是使用Evaluate——目的是查询或更新变量或表达式的值。
选择Evaluate功能后,系统弹出一个对话框。该对话框包含三个选项区域:Evaluate域可以输入一个含有目前代码中(程序暂停区的作用域)正在使用的变量名、或含变量的表达式、或常量表达式。按回车键后,在Result域中显示变量或表达式的值。还可以用New value域进行调试。
如果调试程序时发现Result域显示的某变量或表达式的值不正确,并能估计出该变量或表达式的值,则可以将该值输入到New value域,继续执行程序,其目的是肯定错误发生处是否在当前位置之前。如果输入这个正确的值并将程序继续执行完毕而结果正确,说明在目前暂停处之前已经发生错误而之后无错误。
(5) Break/Watch——用于设置断点和监视表达式。
选择Add Watch功能选项,系统将弹出一个菜单,在Add Watch框中输入变量名或表达式,按回车键后,系统在屏幕底部开辟一个窗口并显示 该变量或表达式的值。
展开阅读全文