Mac VScode c++ 踩坑指南

在使用VSCode的LLDB调试器进行Mac开发时遇到的挑战及解决方案,包括printf输出问题与控制台选择。

继上次将mac的clang编译器换成gcc之后,开始折腾VScode。使用Mac的调试器lldb时,踩了很多坑。

第一个,是使用printf函数,Debug Console中没有输出。经过查询后发现,printf里的内容都是在输出缓冲区中,并没有打印出来,解决方法有两个,第一个是输出的内容最后加上\n,第二个是将fflush(stdout);紧跟在printf后面。

这简直不能忍,让我立马产生把调试器换成gdb的冲动,但是网上查询了mac换gdb的教程后发现非常麻烦,无奈只能屈服于lldb的淫威。

第二个,调试时可以输出到外部的终端或是VScode的Debug Console,在launch.json中用"externalConsole": true,或者"externalConsole": false,来控制输出的地方。

而我在输出到Debug Console中的时候,发现输出的内容入如下:
在这里插入图片描述
莫名其妙地跟着@\r\n等字符。实在不想看到这些乱七八糟的字符,指向看到我printf中的那些字符。网上查询后发现,只要输出到Debug Console,那么就会跟着@\r\n,如果使用外部的终端则不会出现。
在这里插入图片描述
算了,看来只能凑合着用了。

MacBook上使用VSCode进行C++开发,可按以下步骤操作: ### 安装VSCode 在浏览器中搜索vscode,打开搜索结果第一条,点击“Download for Mac”,在页面停留一会,下载vscode安装程序。解压缩后,将文件拉入应用程序即可 [^1]。 ### 安装插件 安装C/C++、C/C++ Clang Command Adapter、CodeLLDB(用于debug,解决Catalina不支持lldb调试问题)以及Code Runner(用于编译) [^1]。 ### 添加配置文件 #### tasks.json tasks.json文件的作用是告诉VSCode怎么编译程序,该文件会调用clang c++编译器从源代码中生成一个可执行文件 [^2]。 #### launch.json 有两种配置方式: - 一种是修改launch.json中的配置,示例如下: ```json { "name": "调试", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "lldb", "preLaunchTask": "C/C++: clang++ 生成活动文件" } ``` 其中,name可自行取,每个调试器一个名字,不要冲突 [^3]。 - 另一种是将之前的launch.json文件删除,添加lldb launch.json文件,示例如下: ```json { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${fileDirname}/${fileBasenameNoExtension}.out", "args": [], "cwd": "${workspaceFolder}" } ] } ``` [^4] #### c_cpp_properties.json 文档未详细提及该文件的具体配置内容,但需要添加该文件 [^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值