--------------------------------------------调试篇
错误类型:
编译错误:通常都是语法错误
运行错误:比如分母是0
提示报错的时候:
1.双击提示信息可以直接定位到报错的行
2.从上到下的调试程序,因为后面的报错是有可能是因为前面的报错而引起的连锁反应
Bug:错误,漏洞
Debug:是找出错误,调式
描述问题的3要素:
1.前提条件是什么
2.预期结果是什么
3.实际结果是什么
重现或者复现
可以重现:是指输入相同时,都能重现相同的问题,那么问题是可以复现,重现的
不可重现:是指输入相同时,但问题不重现,那么就成为不可重现,或者不可复现
可以重现的问题,一般都比较好解决
不可重现的问题,处理起来可能会稍微麻烦点
定位问题:
找到出问题的地方
调试技术:
我个人觉得的2种程序形式的调试方式
附加进程:项目中经常遇到这种的
启动调试:练习语法的通常用这样的
断点<break point f9>
当程序运行到此行的时候会暂停,进入单步模式
break有中断的意思,所以程序运行到这里的时候,是会停下来的
逐语句 = 单步调试<step over f10>:
就是走一步看一下结果,边走边看结果,直到发现哪一步出问题了
1.程序是由很多步组成的
2.如果每一步都正确,那么最终结果也应该是正确的
逐过程 f11:
直接进入函数体
其实还是用单步调试方便,也就多打1个断点而已
退出函数<shift + f11>:
这个倒是比较实用
继续运行<continue f5>
继续运行程序,直到下一个断点,或者程序结束,就这2种情况
黄色箭头:表示即将执行这一行的代码,但是还没执行呢
调式和试图 可以打开各种各样的窗口:
1.调试窗口
2.输出窗口
3.断点窗口
4.查找窗口
5.局部变量窗口
6.监视窗口 可以查看全局变量,也可以查看局部变量
7.内存窗口
监视,局部窗口可以直接修改变量值的,而且是"实时"生效的
等等,有很多的,以后再补充
单元测试<unit test>:
就是将一个大的程序,划分成若干单元进行测试
当代码越来越多的时候,将代码封装成多个函数,那么每个函数可以当作是一个单元
如果每个单元的结果都是正确的,那么各个单元连在一起的是,运行的结果也是正确的
测试用例<TestCase>
就是提供各种不同的输入,查看结果
我觉得是主要是把可能引起的临界值都测试一下
如果有修改的话,那么是要重新再测试一次的
最后在联调测试
调用堆栈:
各个函数之间的调用关系或者说函数的调用层次,一个叼意思
每个函数内部的局部变量的值,形参是局部变量哦
程序崩溃:
"需要把 阿发 的官网的文档下载下来,里面的实例比较多 "
c/c++的特点之一:
优点灵活高效,缺点容易出错,程序崩溃
中断:可以直接定位到程序出错的地方
结构体字节填充:
也就是 对齐 操作
应该是以1个标准单位来计算的..小类型提升到标准类型