断点调试——精选推荐
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
断点调试
断点调试
1. 实际需求
在开发中,程序员发现⼀个⾮常诡异的错误,怎么看源代码都发现不了这个错误,这时⽼程序员就会温馨提⽰,可以使⽤断点调试,⼀步⼀步的看源码执⾏的过程,从⽽发现错误所在
2.断点调试介绍
断点调试是指⾃⼰在程序的某⼀⾏设置⼀个断点,调试时,程序运⾏到这⼀⾏就会停住,然后你可以⼀步⼀步的往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码⾏即显⽰错误,停下,然后程序可以进⾏分析从⽽找到这个BUG
断点调试是程序员必须掌握的重要的技能
使⽤断点调试也能帮助我们最终查看C程序代码的执⾏过程,提⾼程序员的⽔平
3.断点调试的快捷键
f5 开始调试,执⾏到下⼀个断点
f11 逐句执⾏代码,会进⼊到函数体中
f10 逐过程执⾏(遇到函数,跳出前,会将该函数执⾏完)
shift+f5 终⽌调试
shift+f11 跳出(跳出某个函数,跳出前,会将该函数执⾏完)
4.断点调试应⽤案例
看⼀下变量的变化情况
void main(){
int sum=0;//断点下在这⾥,然后使⽤f10(逐过程执⾏,可以看到各个变量的变化情况)
int i=0;
for(i=0;i<10;i++){
sum+=i;
printf("i=%d",i);
printf("sum=%d",sum);
}
printf("退出for循环了");
}
5.断点调试应⽤案例2
看⼀下数组越界的情况,当数组越界后,会输出⼀个为⽌的值
void main(){
int arr[]={1,2,3,4,5};
int i=0;
int len=sizeof(arr)/sizeof(int);
for(i=0;i<=len;i++){
printf("arr[%d]=%d",i,arr[i]);
}
}
6.断点调试应⽤案例3
演⽰如果进⼊到调⽤的函数体内,f11(进⼊到函数体),shift+f11(跳出函数)
double cal2(int num1,int num2,char oper){
double res=0.0;
switch(oper){
case '+':
res=num1+num2;
break;
case '-':
res=num1-num2;
break;
case '*':
res=num1*num2;
break;
case '/':
res=num1/num2;
break;
default:
printf("你的运算符有误");
}
return res;
}
7.断点调试应⽤案例4
#include<stdio.h>
#include<stdlib.h>
#include"myfun.h"
void main(){
int n1=10;
int n2=40;
char oper="+";
double res=cal2(n1,n2,oper);
printf("res=%.2f",res);
printf("hello1");
printf("hello2");
system("pause");
}
断点调试
1. 实际需求
在开发中,程序员发现⼀个⾮常诡异的错误,怎么看源代码都发现不了这个错误,这时⽼程序员就会温馨提⽰,可以使⽤断点调试,⼀步⼀步的看源码执⾏的过程,从⽽发现错误所在
2.断点调试介绍
断点调试是指⾃⼰在程序的某⼀⾏设置⼀个断点,调试时,程序运⾏到这⼀⾏就会停住,然后你可以⼀步⼀步的往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码⾏即显⽰错误,停下,然后程序可以进⾏分析从⽽找到这个BUG
断点调试是程序员必须掌握的重要的技能
使⽤断点调试也能帮助我们最终查看C程序代码的执⾏过程,提⾼程序员的⽔平
3.断点调试的快捷键
f5 开始调试,执⾏到下⼀个断点
f11 逐句执⾏代码,会进⼊到函数体中
f10 逐过程执⾏(遇到函数,跳出前,会将该函数执⾏完)
shift+f5 终⽌调试
shift+f11 跳出(跳出某个函数,跳出前,会将该函数执⾏完)
4.断点调试应⽤案例
看⼀下变量的变化情况
void main(){
int sum=0;//断点下在这⾥,然后使⽤f10(逐过程执⾏,可以看到各个变量的变化情况)
int i=0;
for(i=0;i<10;i++){
sum+=i;
printf("i=%d",i);
printf("sum=%d",sum);
}
printf("退出for循环了");
}
5.断点调试应⽤案例2
看⼀下数组越界的情况,当数组越界后,会输出⼀个为⽌的值
void main(){
int arr[]={1,2,3,4,5};
int i=0;
int len=sizeof(arr)/sizeof(int);
for(i=0;i<=len;i++){
printf("arr[%d]=%d",i,arr[i]);
}
}
6.断点调试应⽤案例3
演⽰如果进⼊到调⽤的函数体内,f11(进⼊到函数体),shift+f11(跳出函数) double cal2(int num1,int num2,char oper){
double res=0.0;
switch(oper){
case '+':
res=num1+num2;
break;
case '-':
res=num1-num2;
break;
case '*':
res=num1*num2;
break;
case '/':
res=num1/num2;
break;
default:
printf("你的运算符有误");
}
return res;
}
7.断点调试应⽤案例4
#include<stdio.h>
#include<stdlib.h>
#include"myfun.h"
void main(){
int n1=10;
int n2=40;
char oper="+";
double res=cal2(n1,n2,oper);
printf("res=%.2f",res);
printf("hello1");
printf("hello2");
system("pause");
}。