当前位置:网站首页>C语言知识点精细详解——初识C语言【1】——你不能不知的VS2022调试技巧及代码实操【1】

C语言知识点精细详解——初识C语言【1】——你不能不知的VS2022调试技巧及代码实操【1】

2022-04-23 14:12:00 VelvetShiki_Not_VS

VS2022调试技巧与注意事项

  1. 代码对齐:使用编译器编辑代码时,对于对代码整洁度要求不高或格式不注重的程序员可能会对他人阅读造成困惑,例如:

代码格式参差不一,随着命令行的增加整齐度会影响阅读体验

 一个快捷简便的方法是先Ctrl A选中全部代码,然后依次按下Ctrl K 和Ctrl F可以快速将代码对齐,并使格式统一,使用后上述代码效果如图(注意框定在格式控制符“”中的空格不会被格式统一,如本例的scanf):

   2. 理解.cpp源文件:在创建项目工程时的根目录底下总会伴随两个文件,一个以.cpp代表的代码源文件,它是一个不具备函数运行功能的代码编辑记录,即它只是一个可以使用任意文本编辑软件打开的文本(如编译器只读,TEXT文本编辑器或notepad++),但是不能够由编译器进行操作运行;后者是一个解决方案文件,它用来存储特定的关于源代码.c文件的解决方案设置,提供显示管理文件的图形接口和相关信息。也就是说使用该后缀运行的源代码文本可以执行用户定义的种种函数功能,并且每次继续开发时可以继续上次进度工作,比如布局格式,函数书写等。

   3. 理解debug和release版本:debug为程序调试版本,即仍处于测试开发阶段的程序代码,也尚未发行的代码阶段。Release为代码的发布版本,编译成release的.exe程序文件是程序员想让客户看到的最终版本,但不能直接用于分享,且实际大小比debug版本更低。

    4. 程序执行和调试快捷键细节:

①F5与Ctrl F5区别:F5为调试程序,在代码运行时附加一个调试器,在函数中设置的断点可以在该调试运行中使函数强制暂停,并启用调试器,通过快捷键F10逐过程或F11逐语句的调试代码,可以更方便地找出代码错误bug,或可以观察语句及过程的执行时间,优化代码使代码运行的时间空间复杂度更小。

②Ctrl F5为执行完整代码且不调试,所以该过程仅编译并运行在代码根目录的x64下降目标文件连接而成的.exe可执行程序文件,忽略代码中断点的设置而直接运行主函数。

例:以打印Hello World为例

  1. 创建新项目并添加名为Hello World.c的源代码文件,此时根目录里除了用于编辑程序语言文本的源文件,没有其他文件。
  2. 引用头文件和主函数,单纯使用printf执行格式化输出Hello World的代码里,光标移到printf所处的命令行上,按F9快捷键设置断点(也可以在选项卡的调试中找到新建断点),之后按下Ctrl F7可进行源文件的编译,生成目标文件.obj,再按下Ctrl F5执行程序,得到如图:
  3. 设置了断点但是程序并没有在printf停下,因为Ctrl F5仅仅运行了由目标文件连接而成的可执行文件.exe而不经过调试步骤,所以不会停下来等待命令的发出。
  4. 若想使程序按期望逐条往下运行,即进入主函数后等待命令的发布再打印Hello World,则可在设置断点之后直接按下调试的快捷键F5,进入调试阶段:

①调试中主函数由main入口进入,默认运行到第一个设置了断点的地方,等待命令发布再运行改行语句,注意此时有个小箭头指向设置了断点的该行:

②此时给调试程序发出运行指令,按下逐过程调试指令F10或逐语句调试指令,程序执行当前行,完成后便进入下一个断点(若存在的话):

   

    ③再次按下F10,程序执行return 0,主函数运行完毕,但此时调试仍在进行中,只有等到调试         指令完全跳出了主函数范围(大括号所引的整个函数域),此时不等待用户确认,直接退出了       程序。

④不等用户确认直接关闭程序,这样的情况也出现在直接运行由该源代码生成的可执行文件.exe或无断点的无参数输入调试过程中,也就是程序执行/调试了,但用户来不及看清和确认,程序运行完毕便关闭了:

手速快截到的一张直接调试图

 直接执行可执行程序,因为无断点,所以程序一闪而过

        5. 遇到这样的情况,不是考验眼力和手速,而应该有更加科学的处理办法,经过总结,共有              三种方法可以使用:

①在头文件引入系统命令#include<windows.h>,并在主函数结束语句return 0;前加上一句系统暂停指令system(“pause”);,可以使执行程序或无参调试运行完毕停止并等待观察结果:

②最普遍的一种方法, 无需引入额外的头文件,将上述system指令换为getchar即可实现程序的隐性暂停,可以插入一个断点观察语句执行情况:

可知程序等待在库函数getchar外等待命令,按下F10执行函数,光标停留在下一行,等待用户输入一个字符后才将程序终止。

③最暴力的方法,对于使用VS编译器的用户可以打开工具选项中的常规,找到调试停止时自动关闭控制台并取消勾选,但此方法只针对调试代码,正式的代码运行仍然会自动关闭控制台,为权宜之计。

该阶段知识预热知识可参考如下文章,连贯阅读更容易理解。

C语言知识点精细详解——初识C语言【1】_VelvetShiki_Not_VS的博客-CSDN博客

版权声明
本文为[VelvetShiki_Not_VS]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_67611811/article/details/124182267