-
dev c++怎么设置断点_C/C++编程笔记:VScode搭建C和C++环境的图文教程
2020-11-06 00:01:19前言前两天有小伙伴问起来如何用VScode搭建C语言的环境,正好我之前也想过用VScode搭建C++的环境(个人感觉VC6和Dev C++用着都不是很方便,Dev C++的调试功能不是很好用,而且界面也没有VScode好看,至于VC6我已经...前言
前两天有小伙伴问起来如何用VScode搭建C语言的环境,正好我之前也想过用VScode搭建C++的环境(个人感觉VC6和Dev C++用着都不是很方便,Dev C++的调试功能不是很好用,而且界面也没有VScode好看,至于VC6我已经无力吐槽了,但是学校偏偏用它,美名其曰经典(不过VC6倒确实是很经典hhhh)),故此有了这篇文章。
当然如果懒得折腾,或者用的习惯Dev C++的调试功能的话,其实Dev C++作为C/C++的开发环境也是很不错的选择(尤其是对刚开始学习C语言的同学,注意不要安装在有中文的目录下)。
闲话聊完,接下来动手搭建C和C++的环境。
VScode简单介绍
VScode是一个微软旗下的一个广受欢迎的开源文本编辑器,相较于其他编辑器,VScode有着非常多的优点而让开发者们对其爱不释手,比如炫酷的主题、漂亮的外观、集成了终端以及轻量级的体积等等等等,VScode最厉害的地方在于他有着成熟的插件市场(我们下面马上就要用到)以满足开发者的各种开发需求,得益于这个插件市场,我们可以把VScode打造成各种开发环境。
VScode的下载很简单,直接去官网下载安装即可。
MinGW简单介绍和下载配置
需要注意的一点是,VScode只是一个文本编辑器,本质上和Windows的记事本是一个东西,它不是一个编译器,它只是一个编辑器,编辑器是无法编译运行程序的,这是编译器的工作。那么为了让我们能够在VScode里面编译并运行C/CPP文件,我们需要去额外安装C和C++的编译器:GCC。Windows平台上的GCC移植版本是MinGW。我们用MinGW其实也就是用里面的GCC来编译我们写的C/C++文件。
MinGW下载地址:http://sourceforge.net/projects/mi…
进去之后,选择files:
下载MinGW的压缩包:
下载过程由于是从外网下载,会比较慢,可以多试几次或者挂代理,另外根据笔者的经验来看外网的东西一般中午下载起来会比较快。
下载好了之后把他放在一个没有中文和空格的目录下解压,然后配置环境变量。
在win10的搜索栏(快捷键win+S)搜索环境变量会弹出系统属性,点击环境变量-->上方的用户变量里面找到Path-->点击编辑-->点击新建,然后把你的MinGW的bin路径复制进去(如:D:developmentMinGWbin),然后一路确定。
这样环境变量就配置好了,我们可以随便找一个路径打开一个cmd输入:gcc --version来验证一下:
接下来我们配置VScode
VScode配置
打开VScode,然后打开左边的插件市场,下载并安装两个插件:
Chinese:中文汉化插件,VScode默认是英文界面,为了方便咱给他改成中文的。在搜索栏搜索Chinese,选则中文简体点击右下角的安装(我这里安装过了所以没有那个安装按钮)。
C/C++:一款C/C++语法高亮的代码插件。安装方式和Chinese一样。
搞定之后我们来写一个C文件测试一下,点击左上角的文件-->打开文件夹-->选择一个空文件夹打开,然后右键-->新建文件:
随便起个名(如Hello.c),随便写点代码,比如经典的Hello World:
#include<stdio.h>intmain(void){printf("Hello World!");return0;}复制代码
然后我们编译他,点击最上方的终端-->配置默认生成任务(也可以用快捷键ctrl+shift+b)然后你会看到这样一个选项:
这是让我们选择用什么来编辑这个文件,由于我们写的是C文件,应该用能够编译C文件的编译器(也就是我们上文配置的MinGW里面的GCC),我们点击这里的C/C++编辑器,然后就会发现我们这里生成了一个Hello.exe文件和.vscode文件夹。
打开一个终端(终端-->新终端),输入.Hello.exe来运行这个文件,你会发现终端成功输出HelloWorld,这代表成功运行。 至于这个.vscode文件夹,是当前文件夹里的一些配置文件(比如这里的task.json,它其中写入了使用什么编译器,编译器的路径等信息)。核心示例:
调试程序
接下来我们说调试,VScode的调试快捷键是F5,按下F5,会出现调试器选择界面:
选择GDB,再选择gcc,你会发现终端那里跳转到了调试控制台,并且.vscode文件夹下面又多了一个launch.json文件,上文我们已经说过了.vscode文件夹存放当前工作文件夹的一些配置文件,例如task.json其实是编译运行的配置文件,这里的launch.json文件就是调试相关的配置文件,详解如下:
我们来试着调试程序,按下F9是为当前所在行设置断点。当然你也可以将launch.json文件中的"stopAtEntry": false改为true,这样程序会在main函数开始暂停,相当于在main函数的起步打断点,进入调试之后VScode会给出一个调试工具,长这样:从左到右一次为:
继续(F5)
单步跳过(F10)
单步调试(F11)
单步跳出(shift+F11)
重启(shift+ctrl+F5)
停止(shift+F5)
同时你可以在左边的变量区域监视变量变化情况,这些都是基本的调试功能,这里不再阐述。
结束语
到这里为止我们已经把VScode打造成了一个C和C++的开发环境,并尝试了编译运行和调试,你可以抛弃笨拙VC6和调试不方便的Dev C++转而使用VScode编写调试C/C++的程序了。祝你用的开心!
分享作者:霜漠冰河,原文链接:https://juejin.im/post/6879387384669503501
另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!
C语言C++编程学习:
点击领取C/C++编程学习资料jq.qq.com分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习书籍分享:
编程学习视频分享:
-
VC断点调试
2012-04-24 22:53:24f9 —— 设置/取消断点 f10 —— 单步执行 f11 —— 比f10的步幅小 f10在函数的调用时,直接跳过,在f11下,会进入函数体! f5 —— 执行到下一个断点! 了解调试,首先要知道"断点"这个概念。断点就是...C/C++ code:
f9 —— 设置/取消断点
f10 —— 单步执行
f11 —— 比f10的步幅小
f10在函数的调用时,直接跳过,在f11下,会进入函数体!
f5 —— 执行到下一个断点!了解调试,首先要知道"断点"这个概念。断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看
程序当前的运行状态,比如变量的值,函数的返回值等等。究竟怎么使用断点呢?
1.F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点。
F5调试状态运行程序,程序执行到有断点的地方会停下来。
F10单步执行程序。CTRL+F10运行到光标所在行。
F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面。
SHIFT+F11跳出当前所在函数。
特别说明:
a.有的地方不能下断点。比如空行,基本类型定义语句(不初始化),等等非执行语句。比如
int i; // 此行不能下断点
int j=0;// 这里可以下
CString str;// 这里可以下
intk = Max(i,j);// 这里可以下
b.不是所有断点都会(断)。比如下断点的语句在程序里面没有被执行。
c.此外,ALT+F9还可以下条件断点,不过这个不常用,有兴趣的可以自己研究
2.如何调试Release版的程序?
有些程序在debug下运行的很好,但在release下却总是失败,默认情况下release是不能调试的。 怎么解决呢?
其实"debug"和"release"都只是一个代号而已,各自对应一组不同的编译选项。
在release的默认设置下,ALT+F7 ,调出工程设置对话框,切换到link选项卡,勾选"Generate debug info",然后再切换
到C/C++选项卡,在"Optimizations"里面选"Disable(Debug)",在下面的"Debug info"里面选"Program Database for Edit
and Continue".然后点OK保存设置,重新编译程序,下断点即可。
3.上面两点已经能应付很多种情况了,但是有时候即使在debug下也不能下断点,我以前也曾经遇到过这种问题,一个
调了层的dll,就是不能下断点。其实还除了上面的方法,还有一种最底层的实现技术:使用汇编。
细心的人可能会发现,有时候在调试状态下当程序出现异常的时候,光标会指向汇编代码,而这个代码就是int 3,这其
实是一个中断。
在你的代码的任意地方加上
__asm
{
int 3
};
用debug编译,然后直接运行程序。当程序执行到上述代码的时候,就会出现一个框,告诉你说一大堆信息,说程序错
了,下面有"调试"、"终止"、"忽略",不用理,点调试就可以进入跟踪了。
-
VC6.0 DLL工程DEBUG模式下不能设置断点的几个解决办法
2009-06-30 11:07:00方法一,删除整个Debug文件夹,然后Rebuild All.方法二,关闭工程,删掉...方法三,去掉工程的所有断点,然后重新建,到网上找到好久怎么解决这个问题,最后还是用方法一解决了,可能和自己中间更改了DLL的生成路径有关。方法一,删除整个Debug文件夹,然后Rebuild All.
方法二,关闭工程,删掉工程下的.opt和.ncb文件,打开工程试试,如果不行,看看删掉.dsw和.clw行不行。
方法三,去掉工程的所有断点,然后重新建,
到网上找到好久怎么解决这个问题,最后还是用方法一解决了,可能和自己中间更改了DLL的生成路径有关。
-
VS2005 VS2008 VC2008 2005断点无效-源代码与原始版本不同
2010-08-24 14:13:00不知道怎么回事,断点全无效了... VC直接把整个文件格式化了一次,断点就可以用了菜单:编辑-〉高级-〉设置选定内容的格式 (Ctrl+K, Ctrl+F)通过比较文件发现是由于制表符Tab(0x09)引起的,原因不详。不知道怎么回事,断点全无效了,在网上搜到别人的解决方法,效仿之,解决。
VC直接把整个文件格式化了一次,断点就可以用了菜单:编辑-〉高级-〉设置选定内容的格式 (Ctrl+K, Ctrl+F)通过比较文件发现是由于制表符Tab(0x09)引起的,原因不详。 -
vc 6.0开发ftp断点续传源代码
2012-09-10 23:06:32先添加任务,然后设置onFinish(下载完成后的动作),最后start。 如果目录中已有该文件,程序会自动覆盖,不会出错。 默认下载端口是80,不支持其他端口。如果要这个功能,请修改Mydownload中的fnMyDownload,... -
VC6.0 不能断点调试的解决方法
2010-07-14 09:54:00很久没有使用VC... ====================================================================================== 现象是用 debug中的 step info或者run to cursor合着设置断点会出现O -
vs2010断点无效
2015-05-26 20:03:25不知道怎么回事,断点全无效了,在网上搜到别人的解决方法,效仿之,解决。 VC直接把整个文件格式化了一次,断点就可以用了 Ctrl + A全选 菜单:编辑-〉高级-〉设置选定内容的格式 (Ctrl+K, Ctrl+F... -
这是一个关于VC5.4的问题
2019-10-15 08:24:02各位大佬们,我想问下VC5.4如何才能设置断点呢,我点行标,产生个小红点,但是他好像不是断点,单步调试和跳跃调试又怎么搞呢,求解 -
vc调试 main的参数
2008-09-08 16:24:35a问:我要在VC下下断点调试,但是程序Main需要输入两个参数才能运行,怎样设置才能单步调试啊? 如:我必须在cmd窗口中键入 test.exe aa.bmp 才能运行,怎么单步调试,设置两个路径参数?答:在VC里有输入main参数的选项。... -
解决VS2005 VS2008 vs2010断点无效-源代码与原始版本不同
2012-01-11 08:38:10不知道怎么回事,断点全无效了,在网上搜到别人的解决方法,效仿之,解决。 VC直接把整个文件格式化了一次,断点就可以用了 Ctrl + A全选 菜单:编辑-〉高级-〉设置选定内容的格式 (Ctrl+K, Ctrl+F) 通过... -
VC中PreTranslateMessage屏蔽虚拟键盘的WIN键失效
2015-10-09 07:26:06void CCTV_MP3_Speak::OnBnClickedSoftwareKey() ...在if(……)设置断点,发现虚拟键盘的win键弹起消息怎么在截获之前就已经执行了按入WIN键,没有达到屏蔽WIN键消息目标; 各位有没有遇到该问题? -
Qt多工程时如何设置启动项目
2013-03-06 14:16:00前两天打开一个开源的Qt项目,里面包含了几个工程,我想用编辑器启动其中一个项目加断点调试,可是不知道该怎么弄,因为Qt并没有像vc那样右键“设置为启动项目”类似的操作,就反复看pro文件,Makefile文件,百思... -
xcode6调试的时候有时参数都为nil怎么解决
2014-12-08 11:05:37刚创建的vc 和 nav 都为nil,这给断点调试增加了很多麻烦,难道是xcode的bug吗? 群里问问大牛,不得姐,网上有查,最终找到解决方法: 在Project的Build Settings中把Optimization Level 设置成 None 即可。 -
xcode6.1调试的时候有时参数都为nil怎么解决?
2014-11-07 09:59:28刚创建的vc 和 nav 都为nil,这给断点调试增加了很多麻烦,难道是xcode的bug吗? 群里问问大牛,不得姐,网上有查,最终找到解决方法: 在Project的Build Settings中把Optimization Level 设置成 Non -
滴水逆向 C语言基础学习
2020-10-15 20:39:00前言 在想自己该怎么去写博客,该写些什么,不知道有哪些东西需要去记录,就记录一下自己做的练习和中间需要记录的知识点吧 准备 安装Windows XP虚拟机 ...F9 设置断点 Alt+5 打开寄存器窗口 Alt+6 查看内 -
iOS面试题(八)
2018-05-31 17:57:331、xcode在 release 模式下断点调试, 对象在打印的时候有值,断点调试却没值, 这是怎么回事? 设置Build Settings->Optimization Level 为None[-OO],就可以了 改为: 2、不手动指定autoreleasepool的... -
关于多线程的编程
2009-04-12 17:13:00今天编了一下午,终于把多线程文件查找做好了,在VC 6.0环境下,多线程调试太麻烦了,其中出现了很多的错误,不知道怎么在子线程中添加断点。回去好好问问其他同学。最后发现自己在Mutex初始化地方出现了错误,在... -
C语言也能干大事 全部板书
2011-08-08 14:35:18设置断点很简单,就是在要设置断点的代码行前边点击一下鼠标,有了一个红色小点就说明设置好了断点。 3、控制台程序的入口是main,Win32程序的入口是WinMain 4、以前用TuborC的同学会问“什么叫工程?”。在以前... -
vc++ 开发实例源码包
2014-12-16 11:25:17SettingDlg.h 设置对话框类文件 LocalInfoDlg.h 查看本地信息对话框类文件 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 如题。 FTP、HTTP 多线程断点续传下载文件 源码 如题。 gdiplus应用实例 如... -
vc++ 应用源码包_2
2012-09-15 14:27:40VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.... -
vc++ 应用源码包_1
2012-09-15 14:22:12VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.... -
vc++ 应用源码包_4
2012-09-15 14:38:35VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.... -
vc++ 应用源码包_3
2012-09-15 14:33:15VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.... -
vc++ 应用源码包_6
2012-09-15 14:59:46VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.... -
vc++ 应用源码包_5
2012-09-15 14:45:16VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.... -
asp.net知识库
2015-06-18 08:45:45怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建多层应用 在MastPage中引用脚本资源 2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0)...