用 VS code(并不)欢乐地编写 C/C++ 程序的新手教程【Part 2】- 调试与自定义头文件

前一节指路:用 VS code(并不)欢乐地编写 C/C++ 程序的新手教程【Part 1】
官方教程指路:Using GCC with MinGW


目录


调试程序

这里要再三注意文件路径中不能出现中文,如果出现的话,赶紧回去改,否则接下来会一直报错到怀疑人生。

  1. 生成 launch.json
    1. 按下 F5 或者点击左侧“运行”→“运行和调试”。
      在这里插入图片描述

    2. 在唤出的面板中选择“C++ (GDB/LLDB)”以启动 GDB 调试器。
      在这里插入图片描述

    3. 在各种预先定义的调试配置的下拉菜单中选择“g++.exe - 生成和调试活动文件”。在这里插入图片描述

    4. 此时我们将会得到一个 launch.json,内容大致如下所示。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Apps\\Compilers\\mingw64\\bin\\gdb.exe",// 调试所调用的编译器的绝对路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}
  1. 设置程序断点
    我们注意到,如果没有在程序中设置断点的话,此时调试控制台有如下输出:
    在这里插入图片描述
    程序会一直运行到断点之前,并在终端面板输出断点之前的输出结果。由于我们并没有设置断点,因此程序一直运行到退出,并在调试控制台处返回正常退出的结果。
    现在我们增加断点试试。
    1. 在第 11 行增设一个断点。在这里插入图片描述
    2. 点击左上角的这个绿色三角形“开始调试”。
      在这里插入图片描述
    3. 此时代码编辑器窗口顶部会出现调试控制面板在这里插入图片描述
      单击“单步跳过(F10)”可以推进程序运行。
    4. 此时的界面如下:在这里插入图片描述
      左侧列出了程序中的变量。我们也可以点击“监视”栏的 “+” 号添加我们需要重点关注的变量。在这里插入图片描述
      在这里插入图片描述
      我们输入 word 后就可以密切观察到该变量的变化过程了。
    5. 在我们不断点击“单步跳过”的过程中,可以观察到随着 word 值的不断变化,下方终端也在逐个输出单词。在这里插入图片描述
    6. 如果想了解更多的实现细节的话,可以点击“单步调试(F11)”,进入 C++ 标准库中的源代码。
      在这里插入图片描述

C/C++ 配置

通过配置文件 c_cpp_properties.json 能够更改 C/C++ 扩展的一些设置。
打开命令面板(快捷键 Ctrl+Shift+P )→选择“C/C++ 编辑配置(UI)”。在这里插入图片描述
此处将可以更改编译器路径、包含路径、C 标准和 C++ 标准等。在这里插入图片描述
所有的更改都会修改 c_cpp_properties.json 中的值。该文件会在你打开 C/C++ 扩展设置后自动保存在当前文件夹的 .vscode 文件夹中。你可以在以下两处打开该配置文件:在这里插入图片描述
在这里插入图片描述

添加自定义头文件

近期沉迷于 LeetCode 刷题,但是在 Web 端写代码无法调试(贫穷的我没有钱开会员),每次只能手撕很痛苦;但是 LeetCode 的答题区域只给个接口,前后的内容每次都要手动补充挺麻烦的,于是就和朋友一起完善了一个方便本地编辑调试 LeetCode 代码的头文件。
但是在使用过程中发现,我们的这个头永远都无法被识别出来,编译器一直报错说我们的头找不到。在这里插入图片描述

  1. 配置 c_cpp_properties.json 。打开方式就是我上面提到的。在这里插入图片描述
    "includePath" 的值中添加头文件的路径。注意:值与值之间一定要加英文逗号,隔开。
    根据实际需要选择绝对路径和相对路径。在这里插入图片描述
    右键可以快速复制文件的路径。但是注意,includePath 里的值是头文件所在的文件夹路径,所以粘贴时要把复制下来的文件名删去。还要注意 \ 的转义符号为 \\
    修改完后的 c_cpp_properties.json 如下所示:
    在这里插入图片描述
    图中马赛克部分是我的头文件路径。

上述方法需要在每个需要自定义头文件的程序配置中都设置一遍,对于频繁引用的头文件非常不友好。因此在这提供一种一劳永逸的方法二
在C/C++配置面板中,我们找到包含路径,添加头文件所在文件夹,今后引用头文件的时候都会自动从这里的文件夹中寻找头文件,不需要再手动配置 c_cpp_properties.json 了。在这里插入图片描述


  1. 配置 task.json 。在之前的步骤中我们已经生成了 task.json ,现在只要去 .vscode 文件夹打开它就可以。或者菜单“终端(T)”→“配置任务”也可以打开。
    "args" 中填入值 "-i" ,并将写在 c_cpp_properties.json 中的路径粘贴一份,同样注意逗号和转义字符的问题。这一步指示了预处理过程需要替换的内容的路径,预处理步骤将会生成后缀为 .i 的文件。在这里插入图片描述

这样就可以顺利地运行自定义的头文件啦!我的头又长回来了!


编码问题

在编译头文件的过程中,我的编译器报出 null character(s) ignored 的错误。排查后发现,是因为朋友发给我的头文件编码格式是 utf-16 le,而一般情况下,VS code文本编辑界面中字符是以 utf-8 进行编码的,如果用 Dev C++ 打开甚至会发现 utf-16 le 编写的英文字符都变成全角字符了。
此时,我们只要用记事本打开文档,在另存为的时候选择 utf-8 就可以解决问题了。在这里插入图片描述


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值