单步调试是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。
解山并局决这个问题的方法如下:
1、首先需要设置断点的那一行代码的最前面点逗让击蔽仿下,就会出现一个红色的圆球,代表设置断点成功,下图一共设置了4个断点。
2、设置断点完成之后,按下F5,开始断点调试,断点走到的位置,会在红色圆球上添加一个黄色箭头。
3、继续按下F5, 程序会往下执行,走到下一个断点的时候停止。
4、继续按下F5,当设置的断点不满足条件的时候,不会走进去,而是继续执行,跳到下一个断点。
5、另外,当走到某个断点处,可以实时更改当前变量的值。
6、当不需要单步调试的时候,点击下图标示的图标,可以删除所有的断点。
7、删掉之后,红色圆点消失,这样问题就解决了。
1、调试标记
适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef和#endif进行管理。当程序最终调试完成后,只需要使用#undef标记则慎闹,调试代码就会消失。常用的调试标记为DEBUG, 语句序列:
#define DEBUG#ifdef DEBUG调试代码#endif
2、运行期间调试标记
在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。例如孙罩下面代码:
#include#include using namespace stdbool
debug =falseint main(int argc,char*argv[])
{ for(int i=0ibool go=truewhile(go){ if(debug) {调试代码 }else {}}}
3、把变量和表达式转换成字符串
可是使用字符串运算符来实现转换输出定义
#define PR(x) cout<<#x”=”<
4、c语言的assert()
该宏在中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。
#include assert>using namsapce std
int main(){ int i=100
assert(i!=100)
//Fails}当调试完毕后在孝族#include
前加入#define NDEBUG即可消除红产生的代码}
相当有用。在你编的程序,编译后出错了,你又找不出。就用debug。去纠错。这个debug的功能其实就是把每一步产生的变量值替你列出来。让你一步步检查。当然你要检查的变量要你先选定好。这是它的原理,还有一点点磨正盯细节,你自己去试吧。不过这个也不会一直用,因为逻辑或者是语法上的错误清顷大多数情况下,可以直接瞎和看出来。没必要用debug
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)