导言
本人用的vs2010中文版
程序崩溃的原因:
-
堆栈溢出
1、读取未初始化的值
2、定义一个太大的局部变量
3、递归过深
-
数组访问越界
-
指针
1、访问空指针、野指针、未赋值的指针
2、释放已经被释放的内存
3、不恰定的强制类型转换
启动调试
菜单栏的调试按钮,里面说明了一些方式和快捷键。【F5】
断点
断点用于通知程序在哪里暂停,点击左边栏或者按F9添加断点。
-
逐过程【F10】:一条一条执行代码,遇到方法的时候也会一条执行
-
逐语句【F11】:一条一条执行代码,遇到方法的时候会跳到方法体内逐行执行
-
跳出【shift+F11】:当调试到一个方法体内时,按shift+F11会直接执行完次方法,并跳到调用此方法的下一条语句处暂定
-
继续【F5】:执行程序到下一个断点
-
显示下一语句:黄色箭头的地方是要执行的下一步语句。
-
设置下一语句:拖动断点上的黄色箭头到需要执行的语句上,则会跳过断点到目前黄色箭头之间的语句。
断点标签
断点标签可以对断点进行归类,可以一组一组的设置这些断点。
右击断点可以设置编辑标签。
可以通过标签名过滤或者搜索它们,然后方便的取消它们。
条件断点
在断点处设置条件,当条件为真时,调试会停在此处。
右击断点,点击“条件”, 输入表达式。
断点命中次数
当第N次满足条件的运行到达断点时,才中断程序运行。
当设置好条件时,右击断点,点击“命中次数”:
有三个选项:
-
当满足条件,而且进入断点的累计次数等于N时,断点命中一次。
-
当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。
-
当满足条件,而且进入断点的累计次数大于N时,每次命中断点。
断点筛选器
右击断点,选择断点筛选器,可以设置中断的条件:
命中条件
当命中断点时,可以打印消息。
可以看出,在输出中,输出xt的值
参考: