评论

收藏

[C++] BUG与调试与Release

编程语言 编程语言 发布于:2021-12-25 19:41 | 阅读数:638 | 评论:0

BUG,又名“臭虫”
But why?
原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子?Bug?钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。
DSC0000.png
而为了防止BUG影响程序员的程序,程序员就需要学会处理BUG,这个过程就叫做调试,又名“Debug”,又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。
拒绝-迷信式调试。
当程序跑起来了,但还是出问题了,就需要Debug了。
Debug是调试版本,程序员进行调试代码运行的,内存占用较大。
Release是发布版本,测试人员进行测试的版本,也是用户使用的版本,内存占用较小。
Release版本会自动优化Debug版本,但如果由于优化将Debug原本没问题搞成了有问题,一定要保存现场,截图,然后与测试去对峙。
有的BUG10天出现一次,50天出现一次,很诡异,一定要截图!!!


程序编程常见的错误:
编译型错误:
直接看错误提示信息,双击解决问题,一般都是缺少分号,缺少括号等语法问题。
链接型错误
看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在,一般是标识符名不存在或者拼写错误。
运行时错误:
借助调试,逐步定位问题,最难搞。


程序员28定律:
一名初学者可能80%时间在写代码,20%时间在调试;但是一名程序员可能20%时间在写BUG,80%的时间在调试。


介绍几种调试的快捷键与方法;
f5:
启动调试,经常用来直接调到下一个断点处,f5调试遇到断点,再按f5则跳到逻辑上的下一个断点,而不是物理上的下一个断点。。
f9:
创建断点和取消断点。
断点的重要作用:
可以在程序的任意位置设置断点,这样就可以使得程序在任意想要的位置任意停止执行,继而一步步执行下去。
shift f5:
结束调试;
f11:
逐语句。
f10:
逐过程。
自动窗口:
程序运行时,自动将程序执行的上下文环境中的某些变量,添加在内部给程序员查看,不能手动添加。
局部变量:
与自动窗口稍有不同,范围上是在一个局部,比如一个代码块内,自动添加信息,但是会自动消失,不能手动添加。
监视窗口:
可以手动添加变量信息用来查看。
调用堆栈:
查看程序的调用逻辑,先调后出,后调先出。
条件断点:
满足条件才会在断点处断点。
接下来一句牢牢记住:
所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有愧,就必然需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径。顺着这条途径顺流而下就是犯罪,逆流而上,就是真想。
一名优秀的程序员是一名出色的侦探,每一次调试都是常识破案的过程。


关注下面的标签,发现更多相似文章