赞
踩
程序编译通过,但程序获得的结果不是预期时,我们可能会想一步步跟踪程序,看程序的变量如何变化。
一个办法是在可能发生编错的地方之前写个 cout (之前就是这么做的),但显然比较费劲;
另一个办法就是一般说的调试( debug ),在程序中设置断点( breakpoint ),程序运行到断点时暂停,且可以查看各个变量的具体值。
程序运行过程为:
预处理 -> 编译和优化 -> 生成目标文件 -> 链接 -> 可执行文件
下面几个图标含义,
下面的程序在几个地方设置了断点,用注释标记了下。在程序软件里则会显示一个红色的点
- #include <iostream>
-
- void cal(float x, float y){
- using namespace std;
-
- float z;
- z = x + y; //断点
-
- float m;
- m = x - y;
-
- cout << "z is : " << z << endl;
- cout << "m is : " << m << endl;
- }
-
- void main(){
-
- using namespace std;
-
- float x;
- x = 3; //断点
-
- float y;
- y = 7.8; //断点
-
- for(int i=1; i < 4; i++){
-
- cout << "i is : " << i << endl;
- cout << "i+1 is : " << i+1 << endl; //断点
- }
-
- cal(x,y);
- }
在调试前先进行编译或build,看看有没有语法语义错误。
然后再按F5或对应图标,进入调试模式,执行到第一个断点处 ,
看看调试状态的窗口各处,
1,表示重新开始调试;2,表示关闭调试模式;
3.调试时卡住,按这个。
4,当我们在调试过程改变源代码时,该图表会变亮,表示是否应用改变,再重新调试。
5,快速定位到程序调试到的地方。
6,step into(F11):执行到某个断点处,此时不希望直接执行到下一个断点,而是希望按照代码一步步执行,点击该图标。
如果遇到函数调用,会跟进去函数内部 如果这个函数是系统函数,会变成汇编指令,按下工具栏的Disassembly(16,没标这个数字,从12往后数) 就变成普通代码了 或者弹出一个查找资源的对话框,取消,按step out就回到普通界面了
7,step over(F10):越过去,遇到函数会跨过去,函数里有断点 则不会越过去
8, step out (shift+F11):跳出当前所在函数,函数里有断点不会跳过
9,Run to cursor(ctrl+F10) :运行到光标处,中间有断点不会跳过
断点处一定会停下
10,向监视变量窗口添加监视变量
11,打开或关闭监视变量的窗口(下图右边)
12,打开或关闭变量窗口(下图左边)
变量窗口,会显示当前环境的已经声明的变量及其值,如这里显示 “上下文” 后面的main( )函数的变量x,y。当运行进入函数中,如cal( ) ,“上下文”会变为 cal( ),同时变量也变为cal( ) 中定义的变量。
auto指当前环境已经定义的变量;locals表示只在当前环境作用的变量,出了该作用域变量会被删除;this;
监视变量窗口,一开始是空的,需要自己添加监视变量。“上下文”处于main( )时,而添加cal( )的变量时,会显示为找到该变量,不用担心,当运行到cal( )时,就会显示。
监视变量窗口,可以监视调试过程中监视变量的变化。
14,memory,输入变量的地址,可以直接查看内存 。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。