解决MAC中vscode调试C++代码无法处理输入的问题
写在前面的话:很久没有使用C/C++进行编程了,这次在MAC电脑的vscode中对C/C++代码进行调试时,发现运行到scanf、cin等输入语句时无法输入,参考了网上一些教程,发现有些繁琐或是难以解决我的问题。因此以本文记录最终的解决方案,一来为了记录以便下次遇到时进行解决,二来希望同大家交流探讨。
一、问题描述
这里用一个简单的输入输出示例说明我遇到的问题。当我进行调试时,发现程序的输出是在调试控制台,并且在这里我无法进行输入。(也就是对应scanf的那条语句开始无法继续向下推进)。
因此,我需要寻求方法,解决调试过程中无法进行输入的问题。
二、解决方法
(有多种解决方法,这里选择我认为最易于进行的方法)
Step1:下载相关插件(这一步简单带过)
安装CodeLLDB的扩展插件。
Step2:生成可执行文件
这里既可以直接在终端中输入g++命令,也可以直接点击vscode右上角的运行按钮。
经过这一步,我们会发现当前目录下生成了可执行文件。此时,我们就可以进行调试了。
Step3:调试(修改launch.json
文件)
按fn+F5
(建议这种方法不要选择右上角的调试按钮),然后选择LLDB调试器。
可以看到在当前目录下多了.vscode
文件夹,并且自动创建了launch.json
文件。(这个时候直接进行调试会报错/仍然无法处理输入问题)
这里我们需要修改两个地方:
1、使用集成终端来运行和调试程序:增加 “terminal”: “integrated”,
2、运行当前文件所在目录下的同名可执行文件:修改program属性为:“${workspaceFolder}/${fileBasenameNoExtension}”
如下图所示,为了方便复制,把这段configurations粘贴在这里:
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"terminal": "integrated",
"program": "${workspaceFolder}/${fileBasenameNoExtension}",
"args": [],
"cwd": "${workspaceFolder}"
}
]
至此,修改完成。此时我们再按fn+F5,发现调试可以处理我们的输入语句了。
三、解决每次都需要修改配置文件的方法
在上面的步骤中,已经能解决在当前项目下debug无法处理输入的问题了。但是如果换一个项目,依然要重新经历一次上面的配置修改,较为麻烦。因此考虑解决每次都需要重新修改配置文件的问题。(一种比较简便的方法是将配置文件保存成模板,新建项目后拷贝进去)这里介绍一种更方便的方法:在VSCode的全局用户设置中配置一个默认的launch.json
文件。
使用快捷键command+,
打开设置。点击settings.json
,这个文件是用来存储VS Code的全局用户设置的。
找到名为"launch"
的属性,它的值是一个对象,对象中包含了我们想要配置的launch.json
文件的内容。
根据我们这次的内容修改为如下所示:
此后,我们即使新建一个项目,不需要重新配置调试也可以处理输入了。
个人记录:python是解释类型的语言,与之处理方式不同。经过一些处理,在本电脑下调试时直接按右上角的调试按钮选择python调试进行调试即可。