目前这种方法应该只适用于单文件调试
环境:MacOS G++/GDB(实际上M芯片的Mac上不方便使用gdb,下面我们使用lldb代替,lldb可以兼容g++的调试信息)
VS Code最好提前装好C++的环境包(ms-vscode.cpptools) & damiankoper.gdb-debug(插件,不一定需要)
首先需要是在打开一个文件夹的状态下,需要调试的文件是当前激活的标签,进入左边栏的调试界面
可以自己创建launch.json,配置调试方式
自己手动配置可以参考这里:https://www.youtube.com/watch?v=G9gnSGKYIg4
自己配置好的文件内容如下,使用自己配置的方式比较好:(这两个文件没有的话,自己手动创建一下)
# .vscode/tasks.json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "/usr/bin/g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "--std=c++17", "-DZH_DEBUG" ], "problemMatcher": ["$gcc"] } ] }
# .vscode/launch.json { "version": "0.2.0", "configurations": [ { "name": "(lldb) Zhonghui", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", // "args": ["<", "${fileDirname}/in.txt"], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "lldb", "preLaunchTask": "build" } ] }
也可以点击[Show all automatic debug configurations],然后选择自动的配置文件(见图)
这种方式有概率出错(Configuration 'C/C++: g++ build and debug active file' is missing in 'launch.json'.),重启一下VS Code就可以了,有点迷(所以不推荐使用这种方式)
然后打好断点就可以开始调试了(要注意,开启调试的时候,需要调试的文件需要是正在激活的标签页)
中途会有权限访问请求,同意即可
如何输入?方案1
// freopen("in.txt","r",stdin); // 好复古的写法 // 在task.json里面指定了,编译的时候定义了一个宏(ZH_DEBUG) #ifdef ZH_DEBUG freopen("in.txt", "r", stdin); #endif
如何输入?方案2
调试的时候需要手动输入的话还需要手动配置(应该是弹出专门的输入窗口,或者配置“<”,“in.txt”这样的程序参数,不能通过配置参数实现重定向)
输出则可以在调试窗口直接看到