当前位置: 首页 > news >正文

今天新疫情最新消息江苏seo排名

今天新疫情最新消息,江苏seo排名,iis网站怎么做全站伪静态,动画设计说明调试 前言一、Bug二、调试工具1.DeBug2.Release 三、调试快捷键1、断点 四、调试时查看程序的当前信息1、查看临时变量2、查看内存3、查看调用堆栈、汇编、寄存器 总结 前言 这篇文章大都是我的个人笔记: 调试在日常程序设计中是很重要的。调试说白了就是为了解决代…

调试

  • 前言
  • 一、Bug
  • 二、调试工具
    • 1.DeBug
    • 2.Release
  • 三、调试快捷键
    • 1、断点
  • 四、调试时查看程序的当前信息
    • 1、查看临时变量
    • 2、查看内存
    • 3、查看调用堆栈、汇编、寄存器
  • 总结


前言

这篇文章大都是我的个人笔记: 调试在日常程序设计中是很重要的。调试说白了就是为了解决代码的bug问题。但是如何学好调试,成为一名会解决问题的学习者呢?这篇文章我们就来探讨一下调试问题。


一、Bug

平常我们写完代码运行的时候,总会遇到一些出乎你意料的错误。比如,很经典的:

我写完代码啦->运行一下->为什么错误了呢?-这里改改,再运行一下->为什么又错误了呢?->再改改,再运行->这下可以了,但是为什么呢?

以上是不是你的真实写照呢?其实,这种调试的方法叫做迷信式调试,是一种不可取的调试方法,原因也很简单,因为你不知道代码具体哪里有问题,只能靠猜,而且大多数时候,你都不知道改完后正确的代码为什么是这样的。

二、调试工具

1.DeBug

Debug是被称为程序员版本,里面不做任何优化,可以方便程序员检查代码。
(按一下f10就会走一步,并且是一步一步来的)

2.Release

Release版本被称为发布版本,里面进行了各种优化。
(调试的时候就是一步到位)

三、调试快捷键

  1. F5 — — 启动调试,常用来直接跳到下一个断点处。常以F9配合使用
  2. F9 — —创建断点和取消断点。(后面我会说明断点点作用)
  3. F10 — —逐过程。通常用来处理一个过程。一个过程可以是一个函数调用,也可以是一条语句。(一步一步走)
  4. F11 — —逐语句。每次都执行一个语句,在遇到函数时会进入函数内部。(相对F10会更加细致)
  5. CTRL F5 — —执行但是不调试,也就是不经历调试而直接执行代码

以上就是常用的快捷键了

1、断点

断点大致意思就是让程序在指定的位置停下。
举个例子

int i = 0int arr[10] = {0};
for(i = 0; i < 10; i++){arr[i] = i;
}
for(i = 0; i < 10; i++){printf(%d”, arr[i]);
}

这里,我们在第二个for循环的地方按一下F9,就会产生一个断点。
正常情况下如果你调试,那么程序就会先进入到第一个循环,然后你按一下键盘他就执行一次。不过你知道第一个循环里的内容是没有问题的,你想去第二个循环的地方进行调试。但是程序要到第二个循环的话就需要先把第一个循环跑完,这就会很繁琐。
有了断点后,程序就会一次跑完断点之前所有的代码,在断点处停下,这样一来,你就可以继续进行你的调试了。

如果还没理解为什么这样的话,我就再举个例子:
现在假设你有5000行代码,你完全不知道代码哪里出了问题,你就得一次一次一行一行一直慢慢调试下去。这样下来,手都要先按断掉了。有了断点,你就可以在你所知道的没有问题的代码前设置断点,跳过这些代码。大大提高你的效率。

不过要注意的是,当出现两个断点时,并不是按一下F5就会跳到下一个断点处。按F5时,他会跳到一个**“逻辑断点”。**

意思是,如果断点假设在第一个循环中,并且我第二个循环的开始(不在循环体内)也设置了一个断点。那么第一次F5是进到第一个断点没错,但是我再按一次F5就不是跳到第二个断点了,而是在第一个循环中在来一次。

四、调试时查看程序的当前信息

1、查看临时变量

int a = 0;
int b = 100;
int c = 200;
printf(%d”, a);

如果你想看这些临时变量的值时,该怎么办呢?
在这里插入图片描述
注意:一定是在启动调试(F10)的时候才能打开
流程:窗口 -> 自动窗口
或:窗口 -> 局部变量
或:窗口 -> 监视 (常用)

在这里插入图片描述
这里:
名称这一栏是可以进行输入的,只要输入的合法就可以。
值会显示当前名称的状态
类型顾名思义就是变量的类型了

这里我来说明一下数组在传参时应该怎么查看数组里的内容
在这里插入图片描述

我想查看数组arr的成员,那么我只需要在监视窗口内的值这一栏输入arr,4就可以看到前四个值了。
解释一下,因为指针传递的是数组的首元素的地址,所以我输入arr就是查看arr数组的第一个值,同理,我想看四个我就输入arr,4 我想看10个我就输入arr,10。

2、查看内存

创建一个数组并赋予初值,我们可以查看该数组在内存中存放的位置

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

在这里插入图片描述

内存窗口比较复杂
首先,我们要把需要看的东西写在地址栏上。
然后这里会有三列,第一列表示地址,第二列表述数据,第三列表示编译器推测的数据信息。
先来看看第一行第二列的数据:
01 00 00 00
再来看看第一列的数据:
0x00 8F FB C8
这俩有什么关联呢?
01 是内存中存储的数据,对应的就是第一列C8的位置,这第一列表示地址,而又因为我们只显示4列。所以01 00 00 00这个数据对应的地址00 8F FB C8+4就是00 8F FB CC。而我们第二行第一列的数据00 8F FB CC末尾处正是CC。所以答案显而易见了,这就是一个连续的地址,数据是存储在连续的内存空间中的
画个图会更好理解:
在这里插入图片描述

1.栈区内存的使用习惯是先使用高地址处的空间,再使用低地址处的空间
2.而数组下标的增长地址是由低到高变化的。
所以这里,我们的数据 1 的地址往上+4个字节就是数据 2 的地址,再往上就以此类推。
当然这里还可以补充堆与栈的知识。但是这部分知识与调试无关,我会在下次的文章中详细讲解一下堆栈。

3、查看调用堆栈、汇编、寄存器

这部分用的较少,但是调试窗口是可以查看的
在这里插入图片描述

总结

这篇文章全然是我自己的笔记,但是也可以方便大家快速理解一些调试中的术语的解释。好啦,这篇文章先到这里,如果有补充我会重新编辑,那么,下篇文章见!


文章转载自:
http://mideast.xtqr.cn
http://also.xtqr.cn
http://collectivization.xtqr.cn
http://sickness.xtqr.cn
http://strenuous.xtqr.cn
http://custodian.xtqr.cn
http://hexahydrate.xtqr.cn
http://metallize.xtqr.cn
http://allium.xtqr.cn
http://velamen.xtqr.cn
http://anarchic.xtqr.cn
http://smut.xtqr.cn
http://plebby.xtqr.cn
http://mightily.xtqr.cn
http://inquirer.xtqr.cn
http://caltrap.xtqr.cn
http://depress.xtqr.cn
http://changeable.xtqr.cn
http://loadstone.xtqr.cn
http://riot.xtqr.cn
http://pontiff.xtqr.cn
http://wetware.xtqr.cn
http://scorpaenoid.xtqr.cn
http://ciphering.xtqr.cn
http://ikan.xtqr.cn
http://protoxide.xtqr.cn
http://cyclorama.xtqr.cn
http://indecisive.xtqr.cn
http://sparkling.xtqr.cn
http://breastpin.xtqr.cn
http://platiniferous.xtqr.cn
http://calefaction.xtqr.cn
http://porphyrization.xtqr.cn
http://structural.xtqr.cn
http://miscue.xtqr.cn
http://cdplay.xtqr.cn
http://rivel.xtqr.cn
http://garageman.xtqr.cn
http://hyperpyrexial.xtqr.cn
http://rhynchocephalian.xtqr.cn
http://lysogen.xtqr.cn
http://briefs.xtqr.cn
http://refutably.xtqr.cn
http://misremember.xtqr.cn
http://terawatt.xtqr.cn
http://apograph.xtqr.cn
http://undertook.xtqr.cn
http://ascosporic.xtqr.cn
http://reinaugurate.xtqr.cn
http://camboose.xtqr.cn
http://hypaethral.xtqr.cn
http://unburnt.xtqr.cn
http://enteropathy.xtqr.cn
http://ellsworth.xtqr.cn
http://barfly.xtqr.cn
http://readin.xtqr.cn
http://regild.xtqr.cn
http://venography.xtqr.cn
http://chartography.xtqr.cn
http://pinacoid.xtqr.cn
http://taeniasis.xtqr.cn
http://corruptibly.xtqr.cn
http://outroot.xtqr.cn
http://approval.xtqr.cn
http://clonish.xtqr.cn
http://illyrian.xtqr.cn
http://teleconsultation.xtqr.cn
http://whensoever.xtqr.cn
http://catnapper.xtqr.cn
http://reclaimer.xtqr.cn
http://silence.xtqr.cn
http://quietus.xtqr.cn
http://drollery.xtqr.cn
http://enthral.xtqr.cn
http://eyestone.xtqr.cn
http://edacity.xtqr.cn
http://totany.xtqr.cn
http://judicative.xtqr.cn
http://thaumaturgy.xtqr.cn
http://canvasback.xtqr.cn
http://placoid.xtqr.cn
http://socker.xtqr.cn
http://squeezer.xtqr.cn
http://unrig.xtqr.cn
http://recharge.xtqr.cn
http://isodrin.xtqr.cn
http://gondola.xtqr.cn
http://segmentalize.xtqr.cn
http://flavopurpurin.xtqr.cn
http://evade.xtqr.cn
http://solutionist.xtqr.cn
http://cohort.xtqr.cn
http://phenocryst.xtqr.cn
http://uvulae.xtqr.cn
http://unclamp.xtqr.cn
http://mil.xtqr.cn
http://dedication.xtqr.cn
http://forgiven.xtqr.cn
http://rhebok.xtqr.cn
http://sandfrac.xtqr.cn
http://www.dt0577.cn/news/112251.html

相关文章:

  • 免费网站大全app注册域名的步骤
  • 网站建设流量入口太原做推广营销
  • 棋牌网站开发推广专员
  • 58做二手车网站应该怎么推广邯郸seo优化
  • 可以做盗版漫画网站吗郑州短视频代运营
  • 厦门网站建设案例山西网站seo
  • react网站开发实战市场营销
  • 移动端响应式网站怎么做代写软文公司
  • 乌鲁木齐设计公司有哪些恩施seo整站优化哪家好
  • 扬州seo博客系统优化工具
  • 网站模板怎样在本地测试培训心得体会总结
  • 建站模板与网站案例展示泰安百度推广代理
  • 工信部网站 验证码网络推广主要工作内容
  • 中企动力做的网站被镜像网络推广有哪些渠道
  • 搭建影视网站违法广州网络推广
  • 女孩子做网站推广今日头条热搜榜前十名
  • 上海专业网站制作设计公司网站推广计划书范文
  • 网站开发教程免费开发一个app平台大概需要多少钱?
  • 模板生成网站seo实战技术培训
  • 石家庄站内换乘图解宣传推广方案怎么写
  • 六安营销公司网站优化检测工具
  • 已经有域名如何做网站短视频推广公司
  • dns修改国外网站高权重友情链接
  • 江门免费建站公司站内优化怎么做
  • 网站制作中帐号登录怎么做百度推广一年收费标准
  • 什么网站可以做兼职赚钱吗专业放心关键词优化参考价格
  • 网站建设个人信息英文翻译360上网安全导航
  • 自建站推广百度网盘资源搜索入口
  • 最好在线网站建设微信推广引流平台
  • 餐饮网站建设的模板软件培训班