调试篇

--------------------------------------------调试篇
错误类型:
编译错误:通常都是语法错误
运行错误:比如分母是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个标准单位来计算的..小类型提升到标准类型

时间: 2024-10-10 01:11:39

调试篇的相关文章

FireFox VS Chrome 之 调试篇

一个完美的调试工具,FireBug! 精确跟踪每一步.只要按下图所示,选择"脚本",然后在下方选择脚本所在的文件即可对该文本的执行进行断点跟踪. 并且仅当一个线程运行结束后,才会去执行另外的线程的执行过程,这跟大多数多线程调试工具是一致的. Chrome 内置的调试功能,在某些情况下,并不能很好的把断点和实际断点代码对应起来,这种情况发生在 WebStore  中传入的断点的情况. 所以还是直接在 Chrome 中找到对应的文件,再次添加断点比较准确. 之所以想要使用 WebStore

linux 数据备份(NFS映射方法)——问题调试篇

配置篇:http://jimann.blog.51cto.com/3295893/1918945 该篇用于对在配置过程中出现的问题进行汇总,环境同配置篇 无portmap-*服务器 [[email protected] backup]# yum list -y portmap-* 已加载插件:fastestmirror Loading mirror speeds from cached hostfile  * base: mirrors.tuna.tsinghua.edu.cn  * extra

BIND9源码学习笔记1---gdb调试篇

学习bind9源码之前,首先要知道如何用gdb来调试bind.BIND9的源码我是先看代码弄懂它的架构,像什么event-drive,epoll等, 再去看它的业务流程.看业务流程的时候要追踪它的数据流和处理过程,所以用gdb比较好,当然自己加日志再结合BIND9自有的日志也不是不 行,只是觉得这样更清晰. 编译bind的时候加的有-g和-O2选项,前者不用说了,后者很坑爹的,用gdb调试时会发现代码的实际执行顺序会有所改变,这是编译器的优化. 编译器的优化有三级,-O2就是二级优化的意思,扯远

iOS开发——调试篇&amp;Xcode常用调试技巧

Xcode常用调试技巧 Enable NSZombie Objects(开启僵尸对象) Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧.这个技巧非常非常容易追踪到重复释放的问题.该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址. 怎么开启僵尸对象呢?首先打开“Edit Scheme”(或者通过热键?<),然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项. 现在我们可以关掉ARC来测试重复释放的问

《React Native》之程序调试篇

??代码调试,在程序开发的过程中尤为重要,能协助开发者快速定位问题. ??此文重点介绍React Native开发的程序调试工具及过程. ??呼出Developer Menu对话框,如下图所示: Android物理设备或者IOS物理设备 : 摇晃手机呼出. Android模拟器:Command? + M IOS模拟器:Command? + D 开发者菜单在release(生成环境)不会被呼出. 程序调试我们分成三类: 内容预览,调试效果 Bug查找,断点调试 性能分析 内容预览,调试效果 ??当

unity3d android开发初体验——远程安装调试篇

最近迷上了unity3d这个游戏引擎,这个游戏引擎做的还不错,虽然比起那些昂贵的引擎来说,名字没有那么惹人注目,但是功能上还是挺全的,比如把游戏发布在大多数平台(包括手机.主机.掌机),支持比较先进的虚拟现实技术等等. 然而对于我们这些开发者来说,一款好的游戏引擎,不只需要能够大大提高我们码代码的速率,比如方便调试bug,还要有类似于在线烧写机制,让我们能够看到我们程序运行的效果.在android开发游戏的初期,我并没有深入去探索什么在线调试运行的功能,只是随便做了个demo,然后把它编译一下变

开始学nodejs —— 调试篇

新学习一种技术,肯定会遇到很多坑,我们需要找到这些坑,弄清楚这些坑出现的原因和其中的原理.这种操作就叫做调试. 程序调试的方法和工具多种多样,在这里我总结一下我在学习nodejs的过程中,学到的和用到的调试方法. log 在JavaScript代码中直接console.log,可以在控制台中打印信息.但是这样的功能太单调,项目中模块很多,功能繁杂,如果没有一个约定好的console.log方法,很容易就导致打印的信息十分杂乱,可读性很差. nodejs有一个debug模块,提供: 定义log模块

OD调试篇7--笔记及解题报告

MFC:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量.其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组 件的封装类.----名词解释 开始OD调试     目的是去除软件的使用次数限制 载入程序后F8走走看 发现了弹窗 不是进入程序的窗口   那我们F2设置断点

iMX6Q调试篇-Linux程序开发使用gdb调试

平台: OKMX6Q-S2平台 (ARM Cortex-A9 i.MX6Q) 环境: Linux 一. cmd程序 1.编写一个简单地崩溃程序dest.c,如下: #include "stdio.h" int main() { int *p=NULL; *p=1; //给指针赋值 return 1; } 2.编译 arm-fsl-linux-gnueabi-gcc -g -o 11 dest.c 注意:一定要在命令中加上 -g参数,这样使用gdb调试时才能看到具体是程序的哪一行出了错误