C/C++ Debug环境搭建

自己搭建C/C++测试环境,网上的经验有很多,我也是参考了诸多网友的经验总结了两个比较好方法,总结如下。

背景知识:C语言作为一种高级语言无法被机器直接识别,必须要有一个编译器将写好的语言编译为机器能识别的低级语言,这个过程叫做编译,平时直接在DevCPP中进行debug时,软件已经为我们配置好编译器了,我们只要完成代码设计即可仿真验证了;那么如果是自己直接编写源文件不用像DevCPP之类的软件就需要了解相关的编译器和命令,直接通过编译器进行debug。

方法一:小龙 Dev C++

优点:编译环境直接配置好了,只需设计代码即可进行debug,不需要额外的操作。在这里我推荐小龙Dev C++,原有的Dev CPP 已开源并停更,他是在Dev C++的开源基础上进行了一定的汉化以及更新了编译器的升级版Dev C++。具体来说优化点有以下这些。

  • 安装简单:安装完毕即可使用,无需额外配置;
  • 使用方便:可插入常用代码片段,快速开始编程;
  • 支持单文件开发和多文件项目开发;
  • 可对代码自动格式化,确保代码书写规范;
  • 编译出错信息自动翻译为中文显示;
  • 调试时自动显示函数参数和局部变量的值;
  • 支持使用图形函数库EGE 和 EasyX

方法二:MinGW + VSCode

这种方法需要对C语言的编译过程有一定的了解,要学习额外的关于编译的知识,上手相对没有那么容易。MinGW( Minimalist GNU for Windows):MinGW-w64

MinGW将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。正因为如此,MinGW 现已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,内置的 GCC 停滞在了 4.8.1 版本,而 MinGW-w64 内置的 GCC 则更新到了12.2.0 版本。现在的MinGW-w64分支很多 ,现在我们简要了解一下各版本之间的区别。

Github上的MinGW-W64-binaries : niXman/mingw-builds-binaries: MinGW-W64 compiler binaries (github.com)

i686-12.2.0-release-posix-dwarf-msvcrt-rt_v10-rev2

x86_64-12.2.0-release-posix-seh-msvcrt-rt_v10-rev2

i686-12.2.0-release-posix-dwarf-ucrt-rt_v10-rev2

x86_64-12.2.0-release-posix-seh-ucrt-rt_v10-rev2

i686-12.2.0-release-win32-dwarf-msvcrt-rt_v10-rev2

x86_64-12.2.0-release-win32-seh-msvcrt-rt_v10-rev2

i686-12.2.0-release-win32-dwarf-ucrt-rt_v10-rev2

x86_64-12.2.0-release-win32-seh-ucrt-rt_v10-rev2

"I686"意指适用于32位操作系统的的程序包。

"12.2.0"意指当前程序包版本位12.2.0。

"posix"适用于基于Linux kernel 开发而来的操作系统,如linux,macos。

"win32"适用于基于windows开发而来的操作系统,如windows。

"dwarf,seh,sjlj"这些都是异常处理模型,其中dwarf仅支持32的操作系统,性能较强;seh仅支持64位的操作系统,性能较强;sjlj同时支持32位和64位操作系统,但性能较差。

"msvcrt" 在较老的windows操作系统(win10之前),较低版本的visual studio(2017之前)上使用。

"ucrt"在较新的操作系统和visual studio上使用。

下载好对应的MinGW-W64后解压到目标文件夹下(这个由自己定),然后将mingw下的bin文件夹所在的位置添加到系统环境变量中并在终端中通过 gcc -v 检查是否配置成功。

在完成以上步骤后在 VSCode 中添加"C/C++","C/C++ Extensions","C/C++ Compile Run","Native Debug"插件,此时可通过F6调用"C/C++ Compile Run"的功能直接链接到配置好的 MinGW-W64,进行 debug。当然也可以通过"Native Debug"半自动完成 task.json 和 launch.json 的配置进行仿真,此时是通过建立的 task.json 和 launch.json 进行 Debug,这种 Debug 方式将会导致设计中 GB 2312 格式的中文字符以 UTF - 8 格式输出,目前我还没有找到较好的解决方法。不过要是使用"C/C++ Compile Run","Code Runner"插件直接进行 Debug 则不会产生乱码问题。

PS:直接调用 VSCode 配置的 task.json、launch.json 进行 debug 如果出现中文乱码是因为编码格式不统一产生的,将源文件的编码格式由 GB2312 改为 UTF - 8 即可。

2022-02-13 增补

不过要是想不使用插件在 VSCode 中集成终端 Debug,必须将设计的中文字符集改为 UTF - 8,因为集成在 VSCode 中的终端只支持 UTF - 8 编码,不论是将集成终端设为 PowerShell 或者 CMD 都是一样的,所以最好程序设计中不要出现中文,注释最好也要用英文。

对于如果设计中有中文字符出现,还非要直接使用 VSCode 集成终端 Debug 的同学,我的建议创建一个 UTF_8_Design 存放带有中文字符的设计,如果要转码点击右下角的 UTF-8,然后选择通过编码保存,此时代码中的中文字符可能会乱,不过不要担心,Crtl + Z 一下即会恢复正常,再按下 Ctrl + S 即可保存。或者直接使用 Dev C++ 进行开发,一了百了。

Reference:

1、VScode tasks.json和launch.json的设置 - 知乎 (zhihu.com)

2、vscode 文件配置launch.json tasks.json - 冰糖葫芦很乖 - 博客园 (cnblogs.com)

3、B站-win11上安装MinGW最新版gcc12

#C/C++##悬赏#
全部评论
花了多长时间啊
1 回复 分享
发布于 2023-02-13 09:39 湖北
哇塞谢谢大佬!
1 回复 分享
发布于 2023-02-13 10:06 天津

相关推荐

11-28 17:48
中山大学 C++
点赞 评论 收藏
分享
11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
15
14
分享
牛客网
牛客企业服务