关于C语言程序的调试.ppt

关于C语言程序的调试 前言 C语言程序的调试主要是为了排除程序的逻辑错误 在程序运行的结果与预期的结果不一致的情况下进行 C语言程序调试的手段有多种 1 最简单的一种是 单步调试 使用 stepover 一步一步地执行 可在 变量窗口 Variables 观察和分析变量的变化 2 使用设置 或取消 断点 再使用运行到断点 可在 变量窗口 Variables 观察和分析变量的变化 然后决定是继续单步执行 还是运行到下一个断点 C 6 0的界面窗口如下 3 运行到光标处 先定位好光标的位置 再使用 runtocursor 运行到光标处 然后决定是继续单步执行 还是运行到下一个断点 输出窗口 工作窗口 编辑窗口 可在菜单栏空白处右击 选择要显示的窗口和工具条 调试工具条的显示 方法 使用右键 在菜单栏空白处右击 调试程序示例1 计算分段函数 1 xx 0f x 0 x 0 includevoidmain floatx y printf x n scanf f x if x 0 y 1 x elsey 0 printf f 2f 1f n x y 注 在进行调试前 首先要正常通过编译和连接 排除所有语法错误 点击此按钮进行编译 1 输出窗口 显示出错信息说明及大致行数 3 黑色箭头指示错误的大致位置 2 双击某行错误信息 一 单步调试 主要是解决程序的逻辑错误 运行结果与期望值不一致 开始单步调试 单击 单步执行 StepOver F10 变量窗口 观察 wacth 窗口 可以输入变量和表达式 观察它们的值 当运行到输入语句时 任务标上会出现小图标 点击之 在输入窗口输入数据 2 停止调试 单击 终止调试 StopDebuging 终止调试 二 设置断点调试 调试程序示例2 计算累加和 程序有错 includevoidmain inti sum for i 1 i 100 i sum sum i printf sum d n sum 排除语法错误 运行后发现其结果显然不对 如下图所示 设置一断点 在变量窗口发现sum的值有问题 这时应想到是变量没赋初值 注 如果程序代码多 可设多个断点 调试程序示例2 输入一个5 10之间的整数n 求 1 2 n includevoidmain intn 0 i 1 s k 1 printf 请输入5 10之间任意数 n scanf d 三 运行到光标处 排除语法错误 运行后发现其结果显然不对 2 输入数据后 运行到光标处 同时观察变量的变化 说明 1 可以使用 单步 断点 运行到光标处 等手段互相组合来进行 2 在调试时 也可利用 监视窗口 输入变量或表达式 观察其值的变化 输入变量或表达式 同时观察其值的变化 调试示例 求二数的最小公倍数和最大公约数 includevoidmain intm n j k printf m n n scanf d d mn 37 回车 首先排除所有语法错误后 运行程序 输出结果 最小公倍数是 3最大公约数 7答案不对 调试方法 1 首先要排除语法错误 点击此按钮进行编译 当排除所有语法错误后 进行下步操作 在光标所在行 点击此图标设断点 再点击即取消 根据需要可以设置多个断点 调试开始 点击此图标 GO 运行到断点处 中间有一输入语句 输入数据 37 程序运行到第一个断点 在 变量窗口 观察到 m 3 n 7 再次点击此图标 GO 运行到第二个断点处 在 变量窗口 观察到 m 3 n 7 在此处发现问题 什么问题 是因为数据输入不对 程序要求不允许输入负数 二个数必需为正数 否则程序不能往下走 单击 终止调试 StopDebuging 终止调试 把循环条件 M 0 n 0 改为 M 0 n 0 关闭工作区间 重新编译 设置二个断点 点击图标 GO 运行 如输入 37 再点击图标 GO 程序不向下走 说明有问题 输入数据不对 重新输入正确数据 37 点击图标 GO 运行到第二个断点 然后可以执行 单步调试 运行到printf 处 发现 j 3k 7 答案也不对 说明第二个断点后有问题 单击 终止调试 StopDebuging 仔细分析 循环条件改为 j n 0 mn 37 回车 重新运行程序 输出结果 最小公倍数是 21最大公约数 1 C语言程序调试结束