Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章

这篇具有很好参考价值的文章主要介绍了Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

🎬 鸽芷咕:个人主页

 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》
⛺️生活的理想,就是为了理想的生活!

📋 前言

  🌈hello! 各位宝子们大家好啊,上一章给大家介绍了 Visual Studio 2022功能使用,和一些常用快捷键!
  ⛳️今天来正式来调试环节,带大家看看程序出现错误时如何进行调试!废话说下面开始实践。
  📚本期文章收录在《学习工具》,大家有兴趣可以看看呐
  ⛺️ 欢迎铁汁们 ✔️ 点赞 👍 收藏 ⭐留言 📝!

🔥 注:前一篇文章在这里《高效调试手段与技巧(中)》

💬 一些调试的实例

💭 实例一

  ⛳️ 求 1!+2!+3! …+ n! ;不考虑溢出。我们先来看一下这段代码有什么问题?这时候我们如果输入3,期待输出9,但实际输出的是15。

  • 这时就要调试一下看看是哪里出现问题了
  • 首先推测问题出现的原因。初步确定问题可能的原因最好。

📚 代码演示:

#include <stdio.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;
		for (j = 1; j <= i; j++)
		{
			ret *= j;
		}
		sum += ret;
	}
	printf("%d\n", sum);
	return 0;
}

📑 代码结果:
Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

📺 调试演示

首先我们可以确定是结果出现的问题,而结果又是循环来计算,我们就可以进去循环然后把监视窗口调开看看是不是这里的问题?

  • 3的阶乘应该是 (1*1)+(1*2)+(1*2*3) =9

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++
这里我们通过调试就可以看到,我们的循环在第三次的时候就出现错误了。本来 ret 里面存储的是 3 的阶乘 9 可结果却是 12

  • 这里可以得出我们程序的错误了
  • ret 这个变量未初始化导致结果与预想不同

📚 代码改进:
Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

💭 实例二(nice公司的笔试题)

前面关于我们结果与预想不一样!如何调试这次我们来看一下 nice公司的笔试题 这道笔试题看看!

  • 这道题我们该如何调试
  • 看上去这个代码没什么问题,顶多就是多循环了一次
  • 可结果却是无限循环

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

🔥 注:由于nice公司的笔试题,是在linux环境下的,所以博主对代码做了一个调整让他可以在Windows 环境下运行。

📚 代码演示:

本段代码需要再Windows 环境下调位 32位机器才能运行,否则越界容易出现程序崩溃!

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[10] = { 0 };
    for (i = 0; i <= 12; i++)
    {
        arr[i] = 0;
        printf("hehe\n");
    }
    return 0;
}

📑 代码结果:

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++
这里就可以看到我们在死循环的打印hehe!

✒️ 深度解析为什么会死循环 (nice公司的笔试题)

这时就要用到我们调试里面的内存功能了,其实这里 笔试题 为什么死循环的原因很简单,我们前面说过临时变量是存在 栈区 的,而 栈区 的使用习惯是;

  • 先使用高地址的空间在使用地地址的空间
  • 所以变量 i 就在数组上面一点创建的
  • 那么我们就可以画这样一幅图
    Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

🔥 注:栈区的讲解在《C/C++的内存分布》有过详细讲解大家可以去看看!

💻 观察内存

我们这里就可以调试一下,观察临时变量 i 和临时变量 arr 是不是在栈区是这样存储的!
这里为了观察方便就把数组初始化的时候先放上值!

  • 取地址 i 得到的地址是 0x00A6FBC0
  • 取地址arr 得到的地址是 0x00A6FBF0

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++
这里就可以看到我们临时变量 arri 在内存 栈区中地区是这样存储的!当我们循环第13次时 arr[13] 越界!

  • 就会找到我们临时变量 i 的地址值处从而
  • 改为 0 开始无限循环

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++
🔥 总结:所以我们在使用数组时一定要注意数组越界这个问题,不然就会引发bug。

💬如何写出好(易于调试)的代码

💭 优秀的代码:

  • 代码运行正常
  • bug很少
  • 效率高
  • 可读性高
  • 可维护性高
  • 注释清晰
  • 文档齐全

💬编程常见的错误

💭 编程常见的错误:

直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定。相对来说简单。

  • 通俗的讲就编译器下面的提示

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

💭 编译型错误

💭 链接型错误

看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。一般是标识符名不存在或者拼写错误。

  • 这里就是链接型错误,一般程序会直接提示

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

💭 运行时错误

这个就属于我们上面的 (nice公司的笔试题)为什么会无限循环这个就属于运行错误!

Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++

📝全篇总结

✅ 归纳:
☁️ 好了以上就是关于调试给大家演示的调试实例,大家看完了也要用起来啊!只有用起来才知道自己掌握了没!
看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。
Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章,学习工具,visual studio,面试题,调试技巧,开发工具,c++文章来源地址https://www.toymoban.com/news/detail-615611.html

到了这里,关于Visual Studio 2022 程序员必须知道高效调试手段与技巧(下)终章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python程序员Visual Studio Code指南1简介

    当您开始Python开发之旅的时候,您最有可能接触到的是Python的集成开发和学习环境(IDLE Integrated Development and Learning Environment)。IDLE的简洁性非常适合新手,但对于那些对Python语言比较熟悉并需要高效工作流程的人来说,IDLE还有很多不足之处。目前有一系列用于Python开发的代码

    2024年02月13日
    浏览(11)
  • Visual Studio实用调试技巧---让你成为高端的程序员

    ​ 💓博客主页:江池俊的博客 👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路 ✅数据结构探索 💻代码仓库:江池俊的代码仓库 ​🎪 社区:GeekHub社区 ​ 🎉欢迎大家点赞👍评论📝收藏⭐ 🍁 如果觉得博主的文章还不错的话,请点赞👍收藏🌟 三连支持一下博主💞 在计

    2024年02月14日
    浏览(20)
  • Python程序员Visual Studio Code指南3 编辑代码

    Visual Studio Code提供了许多适用于所有编程语言的标准编辑功能。 快速修复 代码补全 定义 声明 格式化 语法 重构 代码片段 这些内置的编辑功能减少了编辑代码所需的手动任务和键入次数,从而节省了时间。 Python扩展扩展了代码编辑功能。有了Python扩展,导入库只需极少的工

    2024年02月12日
    浏览(19)
  • Python程序员Visual Studio Code指南2 Hello World

    Visual Studio Code的Python 扩展提供了对Python语言的支持,包括语法着色、代码补全、过滤、调试、代码导航和代码格式化等功能,以及Jupyter Notebook支持等Python特有的功能。您可以在Visual Studio Code的扩展视图中安装Python扩展。与从扩展市场安装的任何扩展一样,你可以在设置编辑

    2024年02月12日
    浏览(15)
  • Python程序员Visual Studio Code指南4管理项目和协作

    在项目上下文中管理源代码,需要能够导航和维护文件,在适当的Pytho 环境中工作,以及通过源控制维护更改。这些任务中的每一项都可以在Visual Studio Code中作为标准功能或通过安装扩展来实现。本章将在使用ChatBotAI库创建的聊天机器人应用程序中探讨管理项目的核心功能。

    2024年02月12日
    浏览(18)
  • 程序员必须掌握哪些算法?

    算法是我非常注重学习的一门知识 。下面是我觉得值得学习的一些算法以及数据结构,当然, 并且我也整理一些看过不错的文章给大家, 大家也可以留言区补充。如果觉得不错,别忘了点个赞哦。先上图,后详细解说 一、算法最最基础 1、时间复杂度 2、空间复杂度 一般最

    2024年02月07日
    浏览(20)
  • 【程序员必须掌握哪些算法?】

    一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~ 本文所介绍的排序算法均以升序为例。 直接插入排序是从一段数据中将一个数据在合适的位置插入。

    2024年02月17日
    浏览(22)
  • 【算法】程序员必须掌握的算法?

               Yan-英杰的主页 悟已往之不谏 知来者之可追    C++程序员,2024届电子信息研究生 目录 一:程序员为什么一定要学会算法 二:常见算法介绍         1、时间复杂度         2、空间复杂度         3. 必会内容:         4.使用场景         5.  算法学

    2024年02月12日
    浏览(24)
  • 「程序员必须掌握的算法」字典树「上篇」

    前言: 在计算机科学中,字典树(Trie)是一种有序树,用于保存关联数组(有时我们称之为“映射”或“字典”)。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。字典树的优势在于能够非常快速地查找、插入和删除字符串。 本篇文章将介绍字

    2024年02月07日
    浏览(22)
  • 「程序员必须掌握的算法」动态规划「上篇」

    动态规划 (Dynamic Programming) 是一种算法思想,用于解决一些复杂的问题。本文将介绍动态规划的分类、概念和经典例题讲解。 动态规划可以分为以下两种类型: 0/1背包问题:该问题是动态规划的一种基本类型。在背包问题中,有n个物品可以放入容量为W的背包中,每个物品有

    2024年02月07日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包