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

电子商务网站建设流程是什么中国建筑设计咨询公司

电子商务网站建设流程是什么,中国建筑设计咨询公司,学做网站的笔记本,网页架构各位CSDN的uu们你们好呀#xff0c;今天小雅兰的内容是实用调试技巧#xff0c;其实小雅兰一开始#xff0c;也不知道调试到底是什么#xff0c;一遇到问题#xff0c;首先就是观察程序#xff0c;改改这里改改那里#xff0c;最后导致bug越修越多#xff0c;或者是问别… 各位CSDN的uu们你们好呀今天小雅兰的内容是实用调试技巧其实小雅兰一开始也不知道调试到底是什么一遇到问题首先就是观察程序改改这里改改那里最后导致bug越修越多或者是问别人反正不会调试那么通过这篇文章小雅兰对于调试的认识就更上了一个台阶现在就让我们进入实用调试技巧的世界吧 什么是bug 调试是什么有多重要 Windows环境调试介绍 一些调试的实例 如何写出好易于调试的代码 编程常见的错误 什么是bug 在英文释义中“BUG”常被用作形容昆虫比如小虫、爬虫、臭虫、千年虫等但一般不会单独使用而是与其他单词组合使用比如常见的“millennium bug”翻译成中文就是千年虫或千禧虫的意思再比如“lightning bug”翻译成中文是萤火虫的意思但在英文词汇中有单独的单词锚定萤火虫比如“firefly”。所以它翻译成中文的含义并不固定通常用来描述虫类动物。 在计算机领域行业内通常会将计算机上发生的一些问题用“BUG”来标注比如系统缺陷、程序漏洞、轻微毛病、问题、故障等而在一些固定的英文句式中甚至还可以用来形容轻微的疾病、窃听器材等但类似中文“萤火虫”的英文翻译一样这类词汇一样有其他单词替代通常指的就是“缺陷”或“漏洞”。 基于语言、语种的不同单词的定义、释义以及应用场景也是不同的在英文单词词汇中BUG可以解释前文中提到的含义但在国内应用过程中它又衍生出了另一种含义那就是“不可以思议的事”比如游戏出现BUG了吧、这个BOSS可以卡BUG、这人真厉害出BUG啦在这三种场景下出现的“BUG”一般不是指缺陷、漏洞或昆虫的意思虽然也有这方面的意思但更大的作用是作为感叹词出现一般帮助发言者表达自己的感叹、好奇、愤怒和迷惑等情绪指遇到了自己无法理解或不可思议的事情。 第一次被发现的导致计算机错误的飞蛾也是第一个计算机程序错误。  调试是什么有多重要 编好程序后用各种手段进行查错和排错的过程。 作为程序的正确性不仅仅表现在正常功能的完成上更重要的是对意外情况的正确处理。 从心理学的角度考虑开发人员和调试人员不应该是同一个人。 1. [experiment and adjust]∶试验并调整机器、仪器等2. [shakedown test]∶在安装过程中对设备所作的试验工作 3. [debug]对功能、程序等进行调整和实验验证所有发生的事情都一定有迹可循如果问心无愧就不需要掩盖也就没有迹象了如果问心有愧 就必然需要掩盖那就一定会有迹象迹象越多就越容易顺藤而上这就是推理的途径。 顺着这条途径顺流而下就是犯罪逆流而上就是真相。 一名优秀的程序员是一名出色的侦探。 每一次调试都是尝试破案的过程。 我们是如何写代码的呢 又是如何排查出现的问题呢 拒绝-迷信式调试   调试到底是什么 调试英语Debugging / Debug又称除错是发现和减少计算机程序或电子仪器设备中程序 错误的一个过程。 调试的基本步骤 发现程序错误的存在以隔离、消除等方式对错误进行定位确定错误产生的原因提出纠正错误的解决办法对程序错误予以改正重新测试Debug和Release Debug 通常称为调试版本它包含调试信息并且不作任何优化便于程序员调试程序。Release 称为发布版本它往往是进行了各种优化使得程序在代码大小和运行速度上都是最优的以便用户很好地使用。下面来看一段代码  #include stdio.hint main() {char *p hello bit.;printf(%s\n, p);return 0; }如果真的去实操了一下的话会发现Release版本的速度更快一些且在Release版本下.exe文件所占空间大小比在Debug版本下小得多 然后再来看看二者的反汇编比较 我们会发现在Debug版本下反汇编的操作也多得多  所以我们说调试就是在Debug版本的环境中找代码中潜伏的问题的一个过程。 那编译器进行了哪些优化呢 下面我们还是来看一段代码 #include stdio.hint main() {int i 0;int arr[10] {0};for(i0; i12; i){arr[i] 0;printf(hehe\n);}return 0; }我们会发现如果是在Debug版本下在×86的平台下会死循环地打印hehe在×64的平台下会报出Debug Error的错误。 但是在Release版本下无论是在哪个平台都没有死循环地打印hehe。 那他们之间有什么区别呢 就是因为优化导致的。 在Release版本下是不能进行调试操作的只有在Debug版本下才能进行调试 Windows环境调试介绍 在环境中选择 debug 选项才能使代码正常调试。 快捷键 F5 启动调试经常用来直接跳到下一个断点处。F9 创建断点和取消断点 断点的重要作用可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行继而一步步执行下去。F10 逐过程通常用来处理一个过程一个过程可以是一次函数调用或者是一条语句。F11 逐语句就是每次都执行一条语句但是这个快捷键可以使我们的执行逻辑进入函数内部这是最常用的。CTRL F5 开始执行不调试如果你想让程序直接运行起来而不调试就可以直接使用。调试的时候查看程序当前信息  查看临时变量的值  在调试开始之后用于观察变量的值。查看内存信息  在调试开始之后用于观察内存信息。查看调用堆栈  通过调用堆栈可以清晰的反应函数的调用关系以及当前调用所处的位置。 查看汇编信息  在调试开始之后有两种方式转到汇编   1第一种方式右击鼠标选择【转到反汇编】   2第二种方式 可以切换到汇编代码。 查看寄存器信息  可以查看当前运行环境的寄存器的使用信息。多多动手尝试调试才能有进步。  一定要熟练掌握调试技巧。初学者可能80%的时间在写代码20%的时间在调试。但是一个程序员可能20%的时间在写 程序但是80%的时间在调试。我们所讲的都是一些简单的调试。 以后可能会出现很复杂调试场景多线程程序的调试等。 多多使用快捷键提升效率。一些调试的实例 实例一 实现代码求 123 ... n! 不考虑溢出。 #includestdio.h int main() {int i 0;int sum 0;//保存最终结果int n 0;int ret 1;//保存n的阶乘scanf(%d, n);for(i1; in; i){int j 0;for(j1; ji; j){ret * j;}sum ret;}printf(%d\n, sum);return 0; }这时候我们如果3期待输出9但实际输出的是15。 why? 这里我们就得找我们问题。 首先推测问题出现的原因。初步确定问题可能的原因最好。实际上手调试很有必要。调试的时候我们心里有数。调试过后发现变成了这样所以我们必须要把ret在循环内部赋值成1 那么正确的代码就应该是这样 #includestdio.h int main() {int i 0;int sum 0;//保存最终结果int n 0;int ret 1;//保存n的阶乘scanf(%d, n);for (i 1; i n; i){int j 0;ret 1;for (j 1; j i; j){ret * j;}sum ret;}printf(%d\n, sum);return 0; } 实例二 #include stdio.hint main() {int i 0;int arr[10] {0};for(i0; i12; i){arr[i] 0;printf(hehe\n);}return 0; } 我们会看到这个程序已经死循环了可能有些人就会想这个程序难道不是数组越界了吗怎么会死循环呢为什么不报错呀我们带着一肚子疑惑来研究这段代码。 原理 i和arr是局部变量局部变量是放在栈区上的栈区内存的使用习惯是先使用高地址处的空间再使用低地址处的空间数组随着下标的增长地址是由低到高的这段代码的的确确是越界访问了但是它忙着死循环没时间报错这段代码的运行结果是和环境相关的  C语言在写代码的时候容易出现的一些错误避坑指南——《C陷阱和缺陷》 如何写出好易于调试的代码  优秀的代码 代码运行正常bug很少效率高可读性高可维护性高注释清晰文档齐全常见的coding技巧  使用assert尽量使用const养成良好的编码风格添加必要的注释避免编码的陷阱下面我们来运用一下学过的这些知识 模拟实现库函数strcpy strcpy函数返回的是目标空间的起始地址  #includestdio.h #includeassert.h char* my_strcpy(char* dest, const char* src) {assert(dest ! NULL);assert(src ! NULL);char* ret dest;while (*dest *src){;}//把src指向的字符串拷贝到dest指向的数组空间包括\0字符return ret; } int main() {char arr1[] hello world;char arr2[20] { 0 };printf(%s\n, my_strcpy(arr2, arr1));//链式访问return 0; } 注意 分析参数的设计命名类型返回值类型的设计这里讲解野指针空指针的危害。assert的使用这里介绍assert的作用参数部分 const 的使用这里讲解const修饰指针的作用注释的添加const的作用 #include stdio.h//代码1void test1() {int n 10;int m 20;int *p n;*p 20;//okp m; //ok}void test2() {//代码2int n 10;int m 20;const int* p n;*p 20;//errp m; //ok}void test3() {int n 10;int m 20;int *const p n;*p 20; //okp m;  //err}int main() {//测试无cosnt的test1();//测试const放在*的左边test2();//测试const放在*的右边test3();return 0; }const修饰指针变量的时候 const如果放在*的左边修饰的是指针指向的内容保证指针指向的内容不能通过指针来改变。但是指针变量本身的内容可变。 const如果放在*的右边修饰的是指针变量本身保证了指针变量的内容不能修改但是指针指向的内容可以通过指针改变。下面我们来写一个练习模拟实现一个strlen函数  其实在之前我们就已经用计数器、指针-指针、递归的方法实现过这个函数只是当时的代码写得不够好现在来重新实现一下。 #includestdio.h #includeassert.h int my_strlen(const char* str) {int count 0;assert(str ! NULL);while (*str ! \0){count;str;}return count; } int main() {char arr[10] abcdef;int len my_strlen(arr);printf(%d\n, len);return 0; } 字符串传参传的是首字符的地址。  编程常见的错误 编译型错误  直接看错误提示信息双击解决问题。或者凭借经验就可以搞定。相对来说简单。 链接型错误  看错误提示信息主要在代码中找到错误信息中的标识符然后定位问题所在。一般是标识符名不 存在或者拼写错误。 运行时错误  借助调试逐步定位问题。最难搞。做一个有心人积累排错经验。 好啦小雅兰今天的内容就到这里啦诶嘿最近效率太低了可能是学校水课太多了让人心烦意乱吧而且比较浪费时间哈哈哈只有C语言会让人快乐
http://www.dnsts.com.cn/news/70061.html

相关文章:

  • 抚州做网站公司百度app安卓版下载
  • 多媒体设计与制作毕业设计咸宁网站seo排名
  • 大连手机自适应网站建设服务合肥网站的优化
  • 石家庄公司做网站帮别人做钓鱼网站吗
  • 简单的网站建设公司的模板上海公司章程在哪里可以查询打印
  • 西部数码手机网站做网站比较便宜
  • 百度推广合作佛山优化推广
  • 那个网站可以找人做设计公司官网模板
  • 怎么获得免费网站汕头教育的网站建设
  • 网站建设论文 优帮云phpcms主题移植wordpress
  • 西安网站建设培训中心如何做网站销售
  • 专业做ppt的网站阳江网红店在哪个位置
  • 装修公司合作平台的网站wordpress获取文章中的图片不显示
  • 网站开发硬件工程师待遇手机网站开发公司电话
  • 西安网站快速备案啥叫优化
  • 做印刷的有什么网站网站开发前端要学什么软件
  • 设计导航精选最好的设计网站大全wordpress 摘要标签
  • 网站如何设定关键词wordpress qa
  • 自助建站怎么实现的西樵网站开发
  • 南充营销型网站建设网站一键备份
  • 精益生产网站开发方案wordpress MU多重筛选
  • 手机微网站第二年续费吗网站开发 慕课
  • 嘉兴建站服务湛江网站建设电话
  • 商城网站建设论文展馆设计都是找的什么公司
  • 网站建设松江wordpress游戏主题下载
  • 要学做游戏上什么网站学好广州外贸建网站
  • 南昌网站建设平台福建住房和城乡建设厅网站
  • 网站定制开发要多少钱少儿编程课有没有必要学
  • 网站怎么做引流呢山东知名网络传媒有限公司
  • 网站设计公司 深圳龙华深圳网站设计有限公司