已经对 Dev-C 集成开发环境进行了分享介绍。
已经对 Code::Blocks 集成开发环境进行了分享介绍。
已经对基于MinGW-w64构建C/C 语言基础开发环境进行了分享介绍。
已经对Windows平台基于MinGW-w64 Visual Studio Code Microsoft C/C 扩展构建C/C 语言组合集成开发环境进行了分享介绍。
本文接着补充本系列第四篇对利用Visual Studio Code进行调试入门进行介绍。
本次分享内容的目录如下:
前言
创建源码文件
调试配置
代码调试入门(启动调试会话、调试控制面板介绍、设置断点、设置监视、执行调试)
结束语
前提:利用本系列第四篇文章中已经创建的工作区(如C:\MyCode\VSCodeWS\)、已经配置好的Microsoft C/C 扩展(如c_cpp_properties.json文件)。
为了便于调试,在工作区下创建新的源码文件(如:C:\MyCode\VSCodeWS\test.c)
#include <stdio.h>int main(void){ int num = 5; int fact = 1; for(int i=1; i<=num; i ) { fact = fact * i; } printf("%d! = %d\n", num, num, fact); return 0;}
接下来我们来配置Visual Studio Code,以实现在按F5键时启动GCC调试器(gdb.exe)。
Step1:按快捷键Ctrl Shift P打开命令面板,输入“launch”,然后从建议列表中选择“ 调试:打开launch.json“。
Step2:然后从新的建议列表中选择“ C (GDB/LLDB)“环境。
Step3:然后从新的建议列表中选择“ gcc.exe - 生成和调试活动文件“。
Step4:此时Visual Studio Code会在工作区.vscode目录下创建一个的launch.json文件(指定了调试信息),并在代码编辑器中将其打开。
launch.json文件
launch.json文件中相关参数说明如下:
另外再介绍一个launch.json文件中没出现的一个参数logging:用于确定应将哪些类型的消息记录到调试控制台中。
调试配置完成后,就可以开始进入调试环节了。
Step1:在左侧的资源管理器中选中待调试的源码文件(如:test.c),然后按快捷键F5 或 执行主菜单栏【运行】下的【启动调试】子菜单项,开始启动调试会话。
Step2:可以看到整个Visual Studio Code软件界面发生了变化(如下图示)
调试界面
Microsoft Windows [版版本本 6.1.7601]版版权权所所有有 (c) 2009 Microsoft Corporation。。保保留留所所有有权权利利。。C:\MyCode\VSCodeWS> cmd /C "c:\Users\jiangsu\.vscode\extensions\ms-vscode.cpptools-0.30.0-insiders2\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-apazkxkw.epn --stdout=Microsoft-MIEngine-Out-etzghazt.nff --stderr=Microsoft-MIEngine-Error-fw4aiqep.ya1 --pid=Microsoft-MIEngine-Pid-qcxqmacb.ucz--dbgExe=C:\Develop\MinGW64\bin\gdb.exe --interpreter=mi "
调试控制面板
下面对“调试控制面板”上的6个按钮按从左到右顺序逐一进行介绍:
3.3 设置断点可以在Visual Studio Code软件中设置断点来进行协助调试。可以通过菜单栏【运行】下的【新建断点】子菜单项下的4个子菜单项来创建四类断点:条件断点、内联断点、函数断点和记录点。
一、设置断点方法:
Step1:在代码编辑器中将插入点放在对应代码行;
Step2:然后按快捷键F9或菜单栏【运行】下的【切换断点】子菜单项,会看到在左侧的装订线中出现了一个红点,指示已在此行上设置断点。
Step3:类似Step1、Step2完成其他代码行断点设置。
例下图中给代码第8行、第10行设置了2处调试断点:
设置断点
注:每次新设置断点后,会在主窗体左侧的最下方【断点区域】看到已经设置断点的对应文件代码行号。
二、取消断点方法:
方法同设置断点,再次按下快捷键F9或菜单栏【运行】下的【切换断点】子菜单项,即可取消已经设置的断点。
注:每次取消已设置的断点后,在主窗体左侧的最下方【断点区域】能看到会同步取消已经取消断点的对应文件代码行号。
三、可以启用、禁用或删除所有已经创建的断点。
3.4 设置监视可以在主窗体左侧的【监视区域】通过在变量上设置观测点来实现在程序执行时跟踪具体表达式的变化。
如希望在【监视区域】能实时看到变量 i、fact 值的变化情况,可以通过如下操作步骤实现:
Step1:将插入点放在循环内。在【 监视区域】中,单击加号 添加要监视的表达式,如i、fact等。
添加监视表达式
Step2:然后逐步执行代码,此时请注意观察【监视区域】各变量值的变化情况。如执行了一次【单步调试】后的值情况如下:
执行一次单步调试后的监视表达式值
Step3:要在断点处暂停执行时快速查看任何变量的值,只需用鼠标指针悬停在变量上即可。
悬停查看变量值
3.5 执行调试常规执行调试步骤参考如下:
Step1:按F9执行【切换断点】设置断点。
一般会在要进行调试的自定义变量或自定义函数处,设置断点(断点数目可根据需要设置多个)。
Step2:按F5执行【启动调试】
此时代码编辑器中会直接定位到第一处断点(第8行,有醒目提示)
注:如果代码没有设置断点,且不存在需要交互输入的情况,按【继续】按钮后将会一次执行完所有代码,并在【集成终端】选项卡中输出相应结果。
Step3-1:按F5执行【继续调试】,会执行到第二处断点(第10行);再次按【继续】按钮后,会完成本次代码执行,并在【集成终端】输出相应结果。
注:在【调试控制台】选项卡中可以看到GDB输出的诊断信息。
Step3-2:按F10执行【单步跳过】
执行【单步跳过】会跳过本次不执行的代码,同时在主窗体左侧【变量区域】和【监视区域】可以看到各个变量值和表达式的变化。
注:若当前语句内包括函数且函数内设置断点,则会跳到函数内部断点处。
Step3-2:按F11执行【单步调试】
如果当前代码语句中包含函数,想看更详细的调试信息,则执行单步调试进入函数内部。然后可以根据需要执行其他调试操作。
Step3-4:按Shift F11执行【单步跳出】
如果不想执行函数内部的语句,则可以执行单步跳出直接跳出当前函数,返回到调用源。然后可以根据需要执行其他调试等操作。
注1:在执行Step3-1、Step3-2、Step3-3、Step3-4步骤后,按钮后,注意观察主窗体左侧的【变量区域】的相关变量值、【监视区域】的相关监视表达式、【调用堆栈区域】、【断点区域】的实时变化。
注2:在【调试控制台】选项卡中可以看到GDB输出的诊断信息。
Step3-5:在代码执行过程中,可以随时按【重启】按钮,重启开启调试对话,返回到Step1。
Step3-6:在代码执行过程中,可以随时按【停止】按钮,以结束本次代码调试。
3.6 GDB调试也可以在【调试控制台】选项卡窗口执行GDB命令调试。
本文不在此进行介绍,感兴趣的朋友们请参阅GDB官网(https://www.gnu.org/software/gdb/)。
相信各位 C 语言初学者们阅读完本文后,应该已经对如何在Window平台利用Visual Studio Code来对C/C 语言程序进行调试有了一个基本的了解掌握,接下来就可以再次进入到 C 语言的学习应用环节了。
希望本文能对您有所帮助!喜欢的话就点个赞加关注支持一下哈:)