绝对好使!VSCode for Mac调试C/C++配置lauch.json和tasks.json

写在前面:大家好K。首先为你点进这篇有趣的文章点赞👍!文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;如果觉得这篇文章对你有用,也欢迎你点赞和留下你的评论。更多内容请点进👉我的博客K。👈阅览。

现在网路上Mac版vscode配置C/C++环境的文章很少或很旧,博主照别的教程配置了好多次都不行,这篇文章步骤经过摸索而成,可复现。
效果图

1. 环境

macOS:10.14

VSCode:1.44.2

Xcode:11.3.1(会用到Xcode的工具链,如lldb、clang)

2. 安装插件

编辑、调试C/C++程序,需要安装vscode插件:C/C++。插件官网地址

C/C++插件


现在,用于演示的该文件夹中只有hello.cpp一个文件。继续往下阅读,看看如何配置文件。

现在只有一个源代码文件

3. 添加 lauch.json

lauch.json 用于设置调试、运行时的东东;

tasks.json 用于设置编译时的东东。

  1. 点击顶部菜单栏运行(Run)-> 添加配置(Add Configuration)

添加配置

  1. 点击 C++(GDB/LLDB)。(请忽略下图中别的东西,博主装了别的插件所以才有的)

点击C++(GDB/LLDB)

  1. 点击下图中的第一个clang++ - 生成和调试活动文件。因为该示例使用的C++语言,并且用clang编译器编译(和gcc一样是Mac中自带的,但是推荐用clang,并且不自带g++,所以gcc系的编译器不能默认还不能编译c++,图中的g++是博主自己安装的;图中两个clang++XXX经过实测生成的文件是一样的)。

点击clang++

  1. 会自动生成.vscode文件夹和launch.json文件。

需要特别注意的键:

  1. preLaunchTask:该值需要与tasks.json中的label相同,否则调试时会提示找不到;
  2. externalConsole:如果需要输入东西,最好修改为true使用外部控制台(在运行时额外打开终端)。否则用vscode内置的控制台不能输入东西(不是内联控制台,内联控制台和外部控制台其实是一样的,但是这里调试的时候没有内联控制台这个选项)

其他的键,一般不用修改:

  1. name:显示在‘’调试”(Run)侧边栏的名字;
  2. type:类型。不能改;
  3. request:有launch和attach可选,这里填launch,按下F5就可以启动调试了;而不是attach(附加);
  4. program:程序所在路径和程序名,更多变量在官方文档
  5. args:这里填命令行参数(main函数的形参),如果没有可不填;
  6. stopAtEntry:为true时,在开始运行程序时,不立刻往后执行,先暂停一下,一般填false;
  7. cwd:目标工作目录,在哪个目录调试程序,一般在当前文件夹(项目所在文件夹);
  8. environment:临时手动添加环境变量;
  9. MIMode:指定调试器gdb或lldb。Mac下推荐用lldb,Xcode下载好就有;

可以通过鼠标悬停在关键字(键名)上,查看官方解释。

自动生成.vscode文件夹和launch.json文件

至此,launch.json已经配置好了。

4. 添加 tasks.json

lauch.json 用于设置调试、运行时的东东;

tasks.json 用于设置编译时的东东。

  1. 把界面点到代码的页面,别停留在launch.json,点击顶部菜单栏终端(Terminal)-> 配置任务(Configure Tasks)

在这里插入图片描述

  1. 同样选择clang++的选项,博主这里有两个clang++相关的东东,区别在clang++的路径不一样,博主这里用路径为/usr/bin/clang++的好使,用Xcode路径的那个不好使。

点击终端->配置任务

  1. 点击后就会在.vscode中生成tasks.json文件。

需要特别注意的键:

  1. label:需要与launch.json中的preLaunchTask保持一致,否则调试时会提示找不到;
  2. command:编译器所在的位置,博主用的/usr/bin/clang++
  3. args:编译参数,如果你在命令行用过gcc编译器应该知道这些选项和值都是啥。clang++命令的选项与gcc的类似,可以根据自己需要删改,如需要开启O2来编译,则可以加上两行"-O2"。更多变量在官方文档
  4. cwd:运行时程序的工作目录,一般与command编译器的路径一致。博主这里是手动修改了command值成截图中样子,所以两处不同,但是也可以使用;

可以通过鼠标悬停在关键字(键名)上,查看官方解释。

生成tasks.json

至此,tasks.json已经配置完成

5. 开始调试

点击运行->启动调试,或按键盘F5,或调试()侧边栏->绿色小箭头,开始调试。

如图,博主加了断点(在行号前点一下)、用了外部控制台。窗口顶部中间或触控栏上可以单步往下执行和终止程序。

效果图

6. 总结

关键点:

  1. 配置lauch.json和tasks.json先后顺序可随意;
  2. tasks.json的label和launch.json的preLaunchTask要保持一致,否则调试时会提示找不到;
  3. 如果需要输入东东,一定要将launch.json中的externalConsole设置为true,只有这种方法可以在调试时输入。

关于C/C++内容可以进入博客阅读:https://blog.youkuaiyun.com/qq_33973359

<think>好的,我现在需要回答用户关于VSCode调试Python文件时直接运行使用launch.json配置的区别的问题。首先,我得回忆一下自己之前对VSCode调试的了解,以及用户提供的引用内容。用户提到的直接运行通常是指使用Code Runner这样的扩展,或者右键直接运行Python文件。而launch.json则是VSCode原生的调试配置。我需要明确两者的区别,可能涉及调试功能、路径设置、环境变量等方面。 根据引用内容,用户提到使用launch.json时需要注意当前工作目录(cwd)的设置,默认是工作区文件夹,但可能需要改为文件所在目录。而直接运行可能默认使用不同的路径。这点应该是一个区别,即工作目录的不同可能导致相对路径处理的问题。另外,引用中提到的调试配置可以设置"justMyCode"为true,这样在调试时会跳过库代码,只进入用户自己的代码。直接运行可能不会涉及这样的调试选项,所以调试功能可能更有限。比如断点、单步执行、变量监视等功能是否完整支持。 还有,launch.json允许更详细的配置,比如环境变量、参数传递、选择特定的Python解释器等。而直接运行可能使用默认的环境参数,缺乏定制性。例如,用户如果需要传递命令行参数,就必须在launch.json配置。另外,调试控制台的不同。直接运行可能在输出窗口显示结果,而调试时使用集成终端(integratedTerminal),这样可以交互输入,比如处理input()函数。用户引用中的配置提到使用console设置,这也是一个区别点。还有调试模式下的功能,比如条件断点、日志点、调用堆栈查看等,这些可能在直接运行时不可用,必须通过launch.json启动调试会话才能使用。用户可能在使用CodeRunner时无法进行复杂的断点管理。总结起来,主要区别在于调试功能的完整性、环境配置的灵活性、工作目录的控制、命令行参数的支持以及输入输出的处理方式。需要将这些点分门别类,结构清晰地呈现给用户,并引用相关的引用内容作为支持。最后,生成相关问题,帮助用户深入理解。比如如何配置launch.json调试的高级技巧,解决路径问题的方法等。确保问题覆盖用户可能感兴趣的方面。</think>在VSCode调试Python文件时,直接运行与使用`launch.json`配置的主要区别体现在以下方面: --- ### 1. **调试功能完整性** - **直接运行**:通常通过右键菜单或`Code Runner`插件执行,仅提供简单的代码执行功能,无法设置断点、观察变量或进行单步调试[^2]。 - **`launch.json`配置**:启用完整的调试功能,支持: - 断点调试(条件断点、日志点) - 变量监视与调用堆栈查看 - 单步执行(步入/步过/步出) - 控制`justMyCode`选项(跳过第三方库代码)[^3] --- ### 2. **工作目录控制** - **直接运行**:默认工作目录为项目根目录(`${workspaceFolder}`),若代码使用相对路径(如读取文件),可能因路径层级错误导致报错[^2]。 - **`launch.json`配置**:可自定义工作目录为代码所在文件夹(`${fileDirname}`),避免路径问题: ```json "cwd": "${fileDirname}" // 关键配置项[^2] ``` --- ### 3. **输入输出处理** - **直接运行**:若代码包含`input()`函数,可能无法在输出窗口正常交互。 - **`launch.json`配置**:通过设置`"console": "integratedTerminal"`,在集成终端中运行程序,支持交互式输入[^1]。 --- ### 4. **环境与参数配置** - **直接运行**:使用默认Python解释器环境变量,无法传递命令行参数。 - **`launch.json`配置**:支持灵活配置: - 指定Python解释器路径 - 传递命令行参数(通过`"args": [...]`) - 注入环境变量(通过`"env": {...}`) --- ### 5. **调试模式扩展性** - **`launch.json`配置**:支持多调试配置(如同时调试多个文件或模块),而直接运行只能处理单一文件[^3]。 --- ### 典型场景对比 | 场景 | 直接运行 | `launch.json`调试 | |--------------------|----------|-------------------| | 断点调试 | ❌ | ✔️ | | 相对路径文件操作 | ❌ | ✔️(需配置cwd) | | 命令行参数传递 | ❌ | ✔️ | | 交互式输入支持 | ❌ | ✔️ | | 第三方库代码跟踪 | ❌ | ✔️(可关闭) | ---
评论 179
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AK°

佛系接受打赏????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值