2016网站设计欣赏,京东网站建设目标是什么,seo优化网络公司,怎么做网站手机版#x1f984;个人主页:小米里的大麦-CSDN博客 #x1f38f;所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录
一、前言
二、什么是BUG#xff1f;
三、调试是什么#xff1f;有多重要#xff1f;
一名优秀… 个人主页:小米里的大麦-CSDN博客 所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录
一、前言
二、什么是BUG
三、调试是什么有多重要
一名优秀的程序员是一名出色的侦探。
我们是如何写代码的
又是如何排查出现的问题的呢
1. 调试是什么
2. 调试的基本步骤
3. Debug和Release的介绍。
四、Windows环境调试介绍
1. 调试环境的准备
2. 学会快捷键
五、调试的时候查看程序当前信息
1. 查看临时变量的值
2. 查看内存信息
3. 查看调用堆栈
4. 查看汇编信息
5. 查看寄存器信息
六、多多动手尝试调试才能有进步
七、一些调试的实例
1. 实例
why
八、如何写出好易于调试的代码
1. 优秀的代码
2. 常见的coding技巧
3. const的作用
4. 结论
const修饰指针变量的时候
九、编程常见的错误
1. 编译型错误
2. 链接型错误
3.运行时错误
4. 温馨提示
十、总结
1. 提高代码质量
2. 加速开发进程
3. 增强代码可读性和可维护性
4. 促进团队协作
5. 个人技能提升
十一、共勉 一、前言 本章讲解 什么是bug 调试是什么有多重要 debug和release的介绍。 windows环境调试介绍。 一些调试的实例。 如何写出好易于调试的代码。 编程常见的错误。 二、什么是BUG 第一次被发现的导致计算机错误的飞蛾也是第一个计算机程序错误。 三、调试是什么有多重要 所有发生的事情都一定有迹可循如果问心无愧就不需要掩盖也就没有迹象了如果问心有愧就必然需要掩盖那就一定会有迹象迹象越多就越容易顺藤而上这就是推理的途径。 顺着这条途径顺流而下就是犯罪逆流而上就是真相。 一名优秀的程序员是一名出色的侦探。 每一次调试都是尝试破案的过程。 我们是如何写代码的 又是如何排查出现的问题的呢 拒绝-迷信式调试 1. 调试是什么 调试 英语Debugging /Debug,又称除错是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。 2. 调试的基本步骤 发现程序错误的存在 以隔离、消除等方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法 对程序错误予以改正重新测试 3. Debug和Release的介绍。 Debug 通常称为调试版本它包含调试信息并且不作任何优化便于程序员调试程序。 Release 称为发布版本它往往是进行了各种优化使得程序在代码大小和运行速度上都是最优的以便用户很好地使用。 所以我们说调试就是在Debug版本的环境中找代码中潜伏的问题的一个过程。 四、Windows环境调试介绍
1. 调试环境的准备 在环境中选择 debug 选项才能使代码正常调试。 2. 学会快捷键 最常使用的几个快捷键 F5 启动调试经常用来直接跳到下一个断点处。 F9 创建断点和取消断点 断点的重要作用可以在程序的任意位置设置断点。 这样就可以使得程序在想要的位置随意停止执行继而一步步执行下去。 F10 逐过程通常用来处理一个过程一个过程可以是一次函数调用或者是一条语句。 F11 逐语句就是每次都执行一条语句但是这个快捷键可以使我们的执行逻辑进入函数内部这是最常用的。 CTRL F5 开始执行不调试如果你想让程序直接运行起来而不调试就可以直接使用。 更多快捷键VS中常用的快捷键_vs快捷键-CSDN博客 五、调试的时候查看程序当前信息
1. 查看临时变量的值 在调试开始之后用于观察变量的值。监视和内存各有四个窗口任意一个即可观察的时候需要手动输入需要观察的函数 / 变量 / 地址等。 2. 查看内存信息 3. 查看调用堆栈 通过调用堆栈可以清晰的反应函数的调用关系以及当前调用所处位置。调用堆栈面板鼠标右键可以进行观察设置 4. 查看汇编信息 在调试开始之后有两种方式转到汇编 第一种方式右击鼠标选择【转到反汇编】第二种方式调试 - 窗口 - 反汇编 可以切换到汇编代码这就比较偏底层简单待过。 5. 查看寄存器信息 可以查看当前运行环境的寄存器的使用信息。这就更偏物理硬件底层了。 六、多多动手尝试调试才能有进步 一定要熟练掌握调试技巧。 初学者可能80%的时间在写代码20%的时间在调试。但是一个程序员可能20%的时间在写 程序但是80%的时间在调试。 我们所讲的都是一些简单的调试。 以后可能会出现很复杂调试场景多线程程序的调试等。 多多使用快捷键提升效率。 七、一些调试的实例
1. 实例
实现代码求 123 ... n! 不考虑溢出。
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 这里我们就得找我们问题。 首先推测问题出现的原因。初步确定问题可能的原因最好。 实际上手调试很有必要。 调试的时候我们心里有数。 八、如何写出好易于调试的代码
1. 优秀的代码 代码运行正常 bug很少 效率高 可读性高 可维护性高 注释清晰 文档齐全 2. 常见的coding技巧 使用assert【C语言】assert断言使用详解-CSDN博客尽量使用const 养成良好的编码风格 添加必要的注释 避免编码的陷阱。 3. const的作用
#include stdio.h
//代码1
void test1()
{int n 10;int m 20;int *p n;*p 20;//ok?p m; //ok?
}
void test2()
{//代码2int n 10;int m 20;const int* p n;*p 20;//ok?p m; //ok?
}
void test3()
{int n 10;int m 20;int *const p n;*p 20; //ok?p m; //ok?
}
int main()
{//测试无cosnt的test1();//测试const放在*的左边test2();//测试const放在*的右边test3();return 0;
}
4. 结论 const修饰指针变量的时候 const如果放在*的左边修饰的是指针指向的内容保证指针指向的内容不能通过指针来改变。但是指针变量本身的内容可变。 const如果放在*的右边修饰的是指针变量本身保证了指针变量的内容不能修改但是指针指向的内容可以通过指针改变。 九、编程常见的错误
1. 编译型错误 直接看错误提示信息双击一般可跳转错误代码附近解决问题。或者凭借经验就可以搞定。相对来说简单。 2. 链接型错误 看错误提示信息主要在代码中找到错误信息中的标识符然后定位问题所在。一般是标识符名不存在、拼写错误、头文件没包含、引用的库不存在。 3.运行时错误 借助调试逐步定位问题最难搞。运行时错误是千变万化的需要借助调试逐步定位问题调试解决的是运行时问题。通常因为逻辑原因或者数据调用不合理造成。 4. 温馨提示 做一个有心人积累排错经验。 十、总结 学会调试对于程序员来说至关重要它不仅能够帮助程序员找出并修复程序中的错误还能提升代码的质量和可维护性。下面是一些关于学会调试的重要性的总结 1. 提高代码质量 及时发现错误通过有效的调试技术可以在开发早期阶段就发现并修正错误避免问题积累导致更大的麻烦。减少bug数量熟练掌握调试技巧可以更快速地定位问题所在减少遗留的bug数量。 2. 加速开发进程 缩短修复时间高效的调试可以显著减少在查找和解决问题上所花费的时间从而加快项目的整体进度。避免重复工作如果能够有效地调试和理解代码行为就可以避免因同样的问题反复出现而不得不进行重复修改的情况。 3. 增强代码可读性和可维护性 清晰的逻辑结构良好的调试习惯有助于保持代码的逻辑清晰便于他人阅读和理解。文档和注释在调试过程中添加必要的文档和注释可以帮助其他开发者更快地理解代码的功能和目的。 4. 促进团队协作 共享知识调试过程中可能会发现一些设计上的不足或潜在的问题这些信息可以通过团队分享共同改进。一致的编码标准通过调试团队成员可以学习到如何遵循一致的编码标准和最佳实践这有利于整个项目的统一性和稳定性。 5. 个人技能提升 增强问题解决能力调试是一个不断分析、推理的过程这种经历会逐渐提高程序员解决问题的能力。深入理解系统通过调试开发者可以更深入地了解系统的内部机制这对于未来的开发工作是非常有益的。 总之学会调试是成为一名优秀程序员不可或缺的一部分。它不仅对项目本身有直接的好处也对个人职业发展有着深远的影响。 十一、共勉