1、问题
- 本文使用VS对c程序执行简单的断点调试。
- 调试的c程序:
-
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <Windows.h> #include <string.h> using namespace std; int main(void) { float r=0; float s=0; printf("请输入圆的半径:"); scanf("%f", r); s = 3.14 * r * r; printf("面积是:%f\n",s); system("pause"); return 0; }
-
- 运行程序,输入半径后报错:
- 此时并不知道是代码哪里导致的报错,尝试使用断点进行调试。
2、过程
- 假设一个位置,插入断点。
- 设置Debug模式,点击开始调试。
- 此时程序正常运行,没有报错。
- 先介绍下面三个按键,分别为逐语句、逐过程和跳出。
- 逐语句:从断点开始,一条语句一条语句地执行。如果遇到函数,会进入函数内部执行。
- 逐过程:如果遇到函数,直接执行整个函数。
- 跳出:从函数内部跳出。
- 点击逐语句,程序依旧没有报错,并且已经执行完了printf语句,准备执行scanf语句。
- 继续点击逐语句,执行scanf语句,输入100,点击确定。
- 程序报错,说明是scanf语句出了问题。
- 仔细查看,发现是没有加&。
-
scanf("%f", &r);
-
- 修改后再次调试,运行正常。